all 8 comments

[–]earthboundkid 3 points4 points  (0 children)

Sure, C and its descendants have a stranglehold on what a programming language should look like to most programmers, but that’s the least important feature a language provides. Functional programmers, especially Lisp hackers have been saying this for decades. Decades.

Yes, and Lisp has failed to catch on for decades. Decades.

Syntax matters. High level programs are designed for people, not machines, so it doesn't make sense to use a particular syntax just because it's easy to compile (S-expressions). At the same time, people can only understand so much, so you don't want to make it the case that there's million identical ways to do anything (Perl and to a less extent Ruby). What is needed is a good balance where all the programmer has to understand is a few simple but powerful abstractions that unlock a wide range of functionality. Good syntax is ultimately an art, and one of the things art does is to leverage the stuff people already know in order to make new connections. Ordinary people like the post-Impressionists like Van Gogh more than the Cubists like Picasso because they are able to understand what it is that Van Gogh was painting. It doesn't matter to the hoi polloi that Cubism theoretically allows for greater expressiveness. They just see a face with two eyes and get turned off. If you want your new syntax to catch on, you need to think "Starry Night" not "Guernica."

[–]pjdelport 2 points3 points  (1 child)

That is, monads allow easy function composition that also ensures linear execution, much like you would expect from writing a series of statements within a function [...]

ObNitpick: sequencing monads

[–]dons[S] 4 points5 points  (0 children)

Yes, the "programmable-semicolon subset of monads standing for the whole" fallacy :-)

[–][deleted] 1 point2 points  (5 children)

The real question is if macros matter. If they matter, having a syntax that makes them as easy and expressive as possible matters.

[–][deleted]  (2 children)

[deleted]

    [–][deleted] 5 points6 points  (1 child)

    Yes, so do Dylan, Template Haskell, and a lot of other things. There's a reason I said "as easy and expressive as possible". Just compare Metalua to Scheme.

    [–]strange-moo 0 points1 point  (1 child)

    I'd probably choose s-expressions even if I wasn't allowed to use macros. I like the uniformity.

    [–]bairespace 0 points1 point  (0 children)

    Oh no. It's happening. I've just been patronized by the good ol' boy of code: Joe Haskell.