[HN Gopher] Show HN: Erlang code generator for Idris 2
       ___________________________________________________________________
        
       Show HN: Erlang code generator for Idris 2
        
       Author : Zigma
       Score  : 58 points
       Date   : 2020-09-28 18:57 UTC (4 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | macintux wrote:
       | The list keeps getting longer. The BEAM is quite an attractive
       | target.
       | 
       | https://gist.github.com/macintux/6349828#alternative-languag...
        
       | didibus wrote:
       | Is Idris 2 implemented in Idris 1 ?
        
         | Zigma wrote:
         | Idris 2 is implemented in Idris 2! See https://www.idris-
         | lang.org/idris-2-version-020-released.html
         | 
         | It should still be possible to bootstrap Idris 2 from Idris 1,
         | via Idris2-boot (https://github.com/edwinb/Idris2-boot), and
         | via version 0.2.1 of Idris2 (https://www.idris-
         | lang.org/idris-2-version-021-released.html).
        
       | Kabie wrote:
       | Dependent type on BEAM? Can't wait to try it.
        
       | romanoderoma wrote:
       | This is great news!
        
       | Zigma wrote:
       | Using the Erlang code generator for Idris 2 I was able to build
       | the following website: https://www.typedtext.io
       | 
       | The website includes a blog post about how the website was built:
       | https://www.typedtext.io/posts/view?id=2
        
         | ch4s3 wrote:
         | This is really impressive. IS there anything else you're using
         | Idris for in the context of Elixir/Erlang?
        
           | Zigma wrote:
           | Thanks!
           | 
           | Not yet, but I am interested in building a web framework that
           | is inspired by Phoenix Framework (I really like the Plug
           | abstraction) and Hyper (https://github.com/purescript-
           | hyper/hyper).
           | 
           | I would also like to support Phoenix LiveView in some shape
           | or form.
        
             | ch4s3 wrote:
             | that is very cool.
        
       | rq1 wrote:
       | Thank you Zigma for your work. :)
       | 
       | Can you quickly document the big steps to write a codegen?
       | 
       | I have some ideas I want to have explore.
        
         | Zigma wrote:
         | I assume that you mean a code generator for Idris 2.
         | 
         | I think the easiest way to get going is to start from an
         | existing code generator. Idris 2 currently supports: Chez
         | Scheme, Racket, Gambit Scheme and JavaScript. Pick the language
         | you are most familiar with.
         | 
         | The files that are relevant to the Chez Scheme code generator
         | are located here (similar locations for the other code
         | generators): https://github.com/idris-
         | lang/Idris2/blob/master/src/Compile...,
         | https://github.com/idris-
         | lang/Idris2/blob/master/src/Compile...,
         | https://github.com/idris-lang/Idris2/blob/master/support/che...
         | 
         | The current code generators are based on an intermediate
         | representations called `NamedCExp`, defined here:
         | https://github.com/idris-lang/Idris2/blob/master/src/Core/Co...
         | `NamedCExp` describe various forms an expression can take.
         | These need to be translated into the target language. For
         | example `NmApp` represents calling a function with the given
         | arguments. You don't need to implement everything to make a
         | proof of concept.
         | 
         | The following document describe how to add a new code generator
         | (It does not go into details of building it):
         | https://idris2.readthedocs.io/en/latest/backends/custom.html
         | 
         | You can see an overview of the different intermediate
         | representations here:
         | https://github.com/chrrasmussen/Idris2-Erlang/blob/master/do...
         | (Note that ErlExpr and AbstractFormat is specific to the Erlang
         | code generator)
         | 
         | If you have more questions, you are welcome to join the Idris
         | community at any of the locations listed here:
         | https://www.idris-lang.org
        
       | vmchale wrote:
       | Good stuff! Idris keeps getting more impressive.
        
       | zokier wrote:
       | What is the overall status of Idris2 these days, is it ready to
       | replace Idris1 or is it still heavily WIP? I did notice that
       | 0.2.1 was released about month ago so that sounds great!
       | 
       | Has someone been using Idris (1 or 2) as their "daily driver"
       | language? How has that gone, can you be productive in it?
        
       ___________________________________________________________________
       (page generated 2020-09-28 23:00 UTC)