2,965 reputation
1116
bio website jelv.is
location Berkeley, CA
age 21
visits member for 4 years
seen yesterday

I am a student interested in programming languages, functional programming, program synthesis, type theory, universal algebra and startups (not necessarily in that order!). In the near future, I want to combine as many of these as possible.

I am currently an undergraduate researcher at the Berkeley ParLab, working on program synthesis. This past summer, I was a tech intern at Jane Street Capital, brazenly using OCaml in the real world. Right now, I'm leading a meetup group about type theory; you can see the slides here or just show up to the next on if you live near SF ;).

I am always happy to chat: my email is tikhon@jelv.is

GitHub: http://github.com/TikhonJelvis

Website: http://jelv.is


Dec
3
comment Is it bad to use Unicode characters in variable names?
Also, I think the Unicode makes mathematically oriented code more readable. It lets you get the meaning of the code at a glance, just like the formula it comes from. The letters already have well-known meanings from context. So if you're already familiar with the given formula or the general area, you can read the code without having to parse the identifiers. If you're not familiar with the formula, you should probably look it up even with long variable names. And once you've looked up and understood the formula, the Unicode version is again easier to read.
Dec
3
comment Is it bad to use Unicode characters in variable names?
Reasonable editors have reasonable input methods for Unicode which make it easy to edit code like this. For example, Emacs supports (among other things) the TeX and rfc1345. TeX is just what it sounds like; it lets you type \sigma for σ and \to for . rfc1345 gives you some combinations like &s* for σ and &-> for . As a rule of thumb, I do not worry about accommodating programmers using editors less capable than Emacs.
Dec
3
awarded  Yearling
Nov
29
awarded  Nice Answer
Nov
26
comment Why is the concept of lazy evaluation useful?
@AlexNye: The John Hughes paper has more info. Despite being an academic paper---and therefore no doubt intimidating---it's actually very accessible and readable. If not for its length, it would probably fit as an answer here!
Nov
24
comment Is there a name for this functional programming construct/pattern?
@JimmyHoffa: I don't know about SML, but I've used OCaml, which is similar, and it does support currying almost as ubiquitously as Haskell. However, the coding style seems different: in Haskell, almost every function you write is curried; in OCaml, people often write functions that take a tuple (e.g. uncurried). Things like int * int -> int as opposed to int -> int -> int. I think this is only a matter of code style though.
Nov
12
awarded  Pundit
Nov
4
comment Why isn't functional programming more popular in the industry? Does it catch on now?
There is a significant difference between "complex" and "difficult". I think Rick Hickey's "Simple Made Easy" talk explains this difference very well. The important point is that something strictly simpler can also be more difficult to some people. Difficulty is a function of both the subject and the person in question; complexity is only inherent in the subject.
Oct
10
comment What functionality does dynamic typing allow?
@Jed: Most dynamic languages have a small set of "primitive" types and some inductive way to introduce new values (data structures like lists). Scheme, for example, gets quite far with little more than atoms, pairs and vectors. You should be able to implement these in the same way as the rest of the given dynamic type.
Oct
9
comment What can Haskell's type system do that Java's can't and vice versa?
@JörgWMittag: My understanding is that higher-rank polymorphism concerns where you can put the forall in your types. In Haskell, a type a -> b is implicitly forall a. forall b. a -> b. With an extension, you can make these foralls explicit and move them around.
Sep
8
comment Should Git be used for documentation and project management? Should the code be in a separate repository?
@ThorbjørnRavnAndersen: Even so, unless you have a binary-specific versioning system, it's probably better to keep even binary files in Git rather than on their own.
Sep
8
comment Should Git be used for documentation and project management? Should the code be in a separate repository?
A cool option would be to use Pandoc so that most of your documentation is in Markdown, but the crucial bits can still use TeX. Since it compiles the Markdown to LaTeX, the results look the same. However, this would also let you export it to different formats and would make the source easier to read.
Aug
28
comment Emacs/Vim/Vi - do they have a place in modern software development ecosystem?
Also, for some languages, the good IDE is Emacs. I've found this particularly true for the more functional languages like OCaml, Haskell, Scala and various Lisps.
Aug
17
comment What are the benefits of prefixing function parameter names with p*?
@Darthfett: Even that sort of hungarian notation seems to be trying to implement an ad-hoc, manual type system directly in the variable names. Just use a good statically typed language and have a real type system track things like that for you automatically!
Aug
10
answered Are there any theories or books about how to debug “in general”?
Aug
9
comment A completely free and open programming language
Most people use Emacs or Vim to work with Haskell. There are external tools like ghc-mod and scion that provide IDE-like features to both Emacs and Vim. There are also EclipseFP and Leksah, but I think you're far better off with Emacs.
Aug
7
comment How do you encode Algebraic Data Types in a C#- or Java-like language?
I don't really know C#, but wouldn't you have to parametrize Empty on the list's type? That is, in Haskell [] :: [a], so I expect something like Empty<A>, the same as ConsList<A>. Then you could do something like class Empty<A> : ConsList<A>, assuming the syntax actually works that way :P.
Aug
6
comment Why the question “give five things you hate about C#” is so difficult to answer during an interview?
I think he's saying the opposite--if you think a platform is not broken in any way at all, you don't know it well enough. That is, his point is that it's fine to stick to a single platform as long as you aren't blind to its shortcomings.
Aug
6
comment Why the question “give five things you hate about C#” is so difficult to answer during an interview?
@K.Steff: "Hit-list" is a perfect name for it :). I can certainly think of far more than five problems with even my favorite platform; if you ask me about a language I don't like but have been forced to use (e.g. Java or Python) I could probably go on for hours :P.
Aug
4
comment How have languages influenced CPU design?
@NikC: I was thinking that the addu and subu instructions (the ones that don't check for overflows) were the ones that were added to make C happy. Of course, I don't really know--we only covered it vaguely in lecture and I'm certainly no expert in architecture :P.