2,885 reputation
1015
bio website jelv.is
location Berkeley, CA
age 21
visits member for 3 years, 8 months
seen Jul 23 at 22:53

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


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.
Aug
1
comment Legitimate use for IRC bots
Lambdabot in #haskell is a great example of a good bot: it does stuff like running haskell snippets, figuring out the types of statements and even rewriting functions in point-free style. People use it there all the time.
Jul
30
answered How have languages influenced CPU design?
Jul
30
comment What are good mathematical formulas to know for programming?
@MattEllen: It lets you solve recurrence relations that can help you find the complexity of recursive algorithms. This is particularly important when writing a "divide-and-conquer" style algorithm. Roughly speaking, you can use the master theorem to get the complexity if you know the complexity of each "step" and the branching factor.
Jul
28
revised Please explain the statement that the function an+b belongs to O(n^2) and and Θ(n)?
added 1103 characters in body