« BackLil' Fun Langstaylor.townSubmitted by surprisetalk 13 hours ago
  • taolson 8 hours ago

    Don't know if my language is considered Lil' enough for this, but it's a pure, lazy functional language based upon Miranda (progenitor language to Haskell) that compiles to x86-64 asm. ~6700 SLOC for the (self-hosted!) compiler, and ~3300 SLOC additional for the extensive library of functional data structures and functions.

    https://github.com/taolson/Admiran

    • dunham 11 hours ago

      My little language Newt is 7 kloc. Dunno if it's worth including, it's mostly an exercise to learn how these things work and is not as polished as I'd like.

      - Self-hosted

      - Compiles to javascript

      - Bidirectional typechecking with NbE (based on elaboration zoo)

      - Dependent type checking

      - type classes

      - ADTs with dependent pattern matching

      - TCO (trampoline for mutually tail recursive functions)

      - Erasure of compile-time only values (0, ω quantities, but not linear)

      - Web playground

      - LSP (added this month)

      - Syntax is similar to Agda / Idris / Haskell

      https://github.com/dunhamsteve/newt

      • taolson 8 hours ago

        Either newt was already in the list, or it got added. We talked a bit about using our languages for AoC 2024 -- looks like you've been keeping busy working on it!

      • Perenti 3 hours ago

        I've been playing with my own Smalltalk implementation. I guess it qualifies as a tiny _language_, but the class library is huge!

        Yes, I know that all who do not understand Smalltalk are doomed to re-implement it, poorly. I'm just cutting out the middleman - and this allows it to do things Smalltalk normally doesn't. It allows me to think so far outside the box it's not even visible anymore.

        • ecto 9 hours ago

          loon is a lisp! https://github.com/ecto/loon

            [type Shape
              [Circle Float]
              [Rect Float Float]]
            
            [fn area [s]
              [match s
                [Circle r]  => [* 3.14 r r]
                [Rect w h]  => [* w h]]]
            
            [area [Circle 5.0]]
          • grimgrin 9 hours ago

            idk how I haven't crossed a lisp with square brackets but dang I am sorta stunned at how I've never even envisioned it? thanks

            • shawn_w 2 hours ago

              There's a few lispy languages that support using square brackets as an alternative to parens. Racket even has curly braces too.

              The above really reminds me of tcl, though, which uses square brackets to force evaluation of the command they wrap.

              • cpeterso 7 hours ago

                No shift key needed for square brackets!

                Curl was a proprietary Lisp that {curly brackets} and was designed in the 1990s to build web applications.

                https://en.wikipedia.org/wiki/Curl_(programming_language)

                • dunham 4 hours ago

                  I've always found OCaml's (* ... *) comments annoying, because it needs shift for both characters. But I suspect it's easier to type on a french keyboard.

                  Knuth solves the bracket issue by redefining his keymap to swap () with [] and + with = (macos keymap files found at the bottom of this page: https://www-cs-faculty.stanford.edu/~knuth/programs.html )

                  • Andrex 3 hours ago

                    In high school I tried spec'ing a lang that excluded shift key usage... fun times.

              • mlajtos 12 hours ago

                Fluent – 4K lines – including parser, interpreter, standard library, IDE, UI, docs, examples. Will grow though.

                https://github.com/mlajtos/fluent/blob/main/client.tsx

                • surprisetalk 12 hours ago

                  I'll add it! Thanks.

                  EDIT: Actually, it's not quite "ML-family" enough for this post. But it is a remarkably cool project! :)

              • lachlan_gray 10 hours ago

                Another crazy one is SectorLISP, 223 lines of asm

                https://justine.lol/sectorlisp2/

                • nimbus-hn-test 11 hours ago

                  The hardest part with small languages isn't the parser, it's the standard library and error messages. Getting a helpful IDE experience in that footprint is a significant engineering challenge.