29 votes

How Lisp became god's own programming language (2018)

17 comments

  1. [3]
    cutmetal
    Link
    Man, what a good read. Makes me want to learn lisp! I've always been suspicious of the cult-like devotion that lisp engenders. It's like the xkcd says (paraphrasing and half-remembering): lisp...

    Man, what a good read. Makes me want to learn lisp!

    I've always been suspicious of the cult-like devotion that lisp engenders. It's like the xkcd says (paraphrasing and half-remembering): lisp programs have no side-effects, because nobody will ever run them.

    But the way this article couches it as a mind-expanding language to learn, and compares it to python comps and C# linq - all that actually makes lisp sound good.

    I'll probably learn rust and typescript first though :p

    9 votes
    1. space_cowboy
      Link Parent
      I recommend racket as a first lisp -- no need to learn a new editor and go through lots of complex setup -- everything works out of the box, and it has a track on exercism.org

      I recommend racket as a first lisp -- no need to learn a new editor and go through lots of complex setup -- everything works out of the box, and it has a track on exercism.org

      2 votes
  2. [9]
    teaearlgraycold
    Link
    If someone could make a LISP with a good type system and good syntax I’d use it. But honestly functional TypeScript is kind of like that already.

    If someone could make a LISP with a good type system and good syntax I’d use it. But honestly functional TypeScript is kind of like that already.

    3 votes
    1. [3]
      wervenyt
      Link Parent
      The syntax is the sauce for Lisp. The strength of its metaprogramming comes directly from it, the best I've seen of projects that try to "improve" the syntax basically just turn it into...

      The syntax is the sauce for Lisp. The strength of its metaprogramming comes directly from it, the best I've seen of projects that try to "improve" the syntax basically just turn it into indentation-based rather than parentheses.

      5 votes
      1. [2]
        Eji1700
        Link Parent
        Personally getting rid of so many parens is what go me into F#. I get that some people love them, bu I find i can just read properly indented code faster, and in my case it got me in the habit of...

        Personally getting rid of so many parens is what go me into F#. I get that some people love them, bu I find i can just read properly indented code faster, and in my case it got me in the habit of writing cleaner code in the first place.

        2 votes
        1. wervenyt
          Link Parent
          That's fair, but an ML-derived language is going to be fundamentally different in capability from a Lisp. They have their place, and in many cases they're better for production code, at least for...

          That's fair, but an ML-derived language is going to be fundamentally different in capability from a Lisp. They have their place, and in many cases they're better for production code, at least for the sake of advanced typechecking, but I always miss the obscene flexibility and power of (()(()())) and s-expressions.

          1 vote
    2. [5]
      drannex
      Link Parent
      It already does if you want it, more technical can be found here. Edit: Even Racket has a strong typed variation.

      It already does if you want it, more technical can be found here.

      Edit: Even Racket has a strong typed variation.

      2 votes
      1. [2]
        teaearlgraycold
        Link Parent
        I like that it has range types. Are you familiar with the TypeScript type system enough to compare the two?

        I like that it has range types. Are you familiar with the TypeScript type system enough to compare the two?

        1 vote
        1. drannex
          Link Parent
          Familiar with TS, not familiar with typed lisp to make any judgements, but you might be interested in Coalton, which is a static typed lisp.

          Familiar with TS, not familiar with typed lisp to make any judgements, but you might be interested in Coalton, which is a static typed lisp.

      2. [2]
        em-dash
        Link Parent
        That's runtime type checking, though. Lisp has that in the same sense every other dynamically typed language does. Typed Racket is closer to what I would like to have, but it feels like a second...

        That's runtime type checking, though. Lisp has that in the same sense every other dynamically typed language does.

        Typed Racket is closer to what I would like to have, but it feels like a second language bolted on (with a good FFI to the first one). You only really get the full benefits of static typing if all the libraries you use have type definitions, and not even all of the Racket standard library does (or did, the last time I looked).

        1. drannex
          Link Parent
          I just came across this, while looking into LFE (Lisp Flavoured Erlang), Coalton. Github

          I just came across this, while looking into LFE (Lisp Flavoured Erlang), Coalton.

          Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.

          Github

          1 vote
  3. [4]
    Comment deleted by author
    Link
    1. [2]
      stu2b50
      Link Parent
      Scheme is a Lisp. It'd be like saying "the professor chose Spanish instead of a Romance language".

      and the professor chose Scheme instead of Lisp for that paradigm.

      Scheme is a Lisp. It'd be like saying "the professor chose Spanish instead of a Romance language".

      4 votes
      1. wervenyt
        Link Parent
        Oh dear, don't poke that bear. We should avoid triggering Lisp-2 purity crusaders whenever possible. Enough people already find these conversations tedious, there's no need to drag us all further...

        Oh dear, don't poke that bear. We should avoid triggering Lisp-2 purity crusaders whenever possible. Enough people already find these conversations tedious, there's no need to drag us all further into Tartarus.

        tone intended: complete sarcasm

        3 votes
    2. wervenyt
      Link Parent
      I loooove Scheme. It's a shame there's almost no dialect-agnostic community these days. Without a community creating libraries and end-user programs, it's really hard to understand how you can...

      I loooove Scheme. It's a shame there's almost no dialect-agnostic community these days. Without a community creating libraries and end-user programs, it's really hard to understand how you can wrangle continuations and recursion into almost every other language construct around using macros. Those are the keys to the cult of Scheme, and if you don't like them, Scheme has no time for you. And most people don't like them.

      1 vote
  4. [2]
    pete_the_paper_boat
    Link
    I can't say I'm a huge fan of the Lisp syntax. But I'd love a compile-able subset of the Nix expression language.

    I can't say I'm a huge fan of the Lisp syntax. But I'd love a compile-able subset of the Nix expression language.

    1. wervenyt
      Link Parent
      Have you explored the ML family much? Languages like Haskell, Ocaml, and F# might be along the lines of what you want, if you haven't.

      Have you explored the ML family much? Languages like Haskell, Ocaml, and F# might be along the lines of what you want, if you haven't.