Reputation
3,245
Next privilege 5,000 Rep.
Approve tag wiki edits
Badges
12 18
Newest
 Enlightened
Impact
~239k people reached

Jan
1
awarded  Nice Answer
Jan
1
revised Type systems: nominal vs. structural, explicit vs. implicit
added 1038 characters in body
Jan
1
answered Type systems: nominal vs. structural, explicit vs. implicit
Dec
31
comment Why aren't user-defined operators more common?
How much "school" do you count? For example, I think ∈ for elem is a great idea and certainly an operator everybody should understand, but others seem to disagree.
Dec
30
comment Why aren't user-defined operators more common?
Have you looked at how Haskell does custom operators? They work exactly like normal functions, except they also have an associated precedence. (In fact, so can normal functions, so even there they don't really differ.) Basically, operators are infix by default and names are prefix, but that's the only difference.
Dec
21
awarded  Enlightened
Dec
21
awarded  Nice Answer
Dec
3
comment Is it bad to use Unicode characters in variable names?
Emacs supports a bunch of nice input methods that make typing Unicode symbols easy. (Including a TeX one which is what I use.) Emacs is hardly futuristic. (It is awesome, of course.)
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.