[{"data":1,"prerenderedAt":254},["ShallowReactive",2],{"project-11321164":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":40,"post_text":42,"what":43,"said":81,"maker_in_thread":171,"shape":183,"grid":187,"attempts":218,"same_week":219,"maker_shows":41,"maker_hidden":246,"reader_version":247,"card":248},"11321164","Rhine","A typed Elixir-inspired language on LLVM","title","Show HN: Rhine – A typed Elixir-inspired language on LLVM","https:\u002F\u002Fgithub.com\u002Fartagnon\u002Frhine?","github.com","artagnon",1458433104,2016,81,16,467,2264,21,"notable","languages","programming language","other",[21,24,25,26],"llvm","typed functional language","compiler","curious",0.117,{"positive":30,"neutral":31,"mixed":32,"critical":30},2,5,1,10,{"idea":35,"docs":37,"design":38,"execution":39},{"positive":30,"critical":36},0,{"positive":36,"critical":36},{"positive":36,"critical":30},{"positive":36,"critical":36},[31,36,41,41,41,36,36,32,32,41,41,36,31,36,41,36],3,null,{"problem":42,"audience":44,"pricing":42,"motivation":52,"time_to_build":59,"stack":69,"openness":79,"stage":80,"team_size":79},{"value":45,"source":46,"evidence":47},"Programmers interested in functional languages, including OO developers","inferred",[48],{"id":49,"by":50,"text":51},"11325110","pmontra","Thanks to everybody for all these explanations! I understand the logic of the syntax now. A nice thing with Elixir is that it lures OO developers like me into the realm of…",{"value":53,"source":54,"evidence":55},"A learning project to gain compiler design experience","maker",[56],{"id":57,"by":11,"text":58},"11323154","Thank you. I actually made a lot of design mistakes in both rhine-ml and rhine, which is why I shelved them as \"learning projects\". I do fully intend to write a solid compiler…",{"value":60,"source":54,"evidence":61},"Over a year, about 1 year 1 month of effort",[62,66],{"id":63,"by":64,"text":65},"11321934","pori","> Effort put into rhine-ml: 2 months > Effort put into rhine: 1 year, 1 month Props for the effort put into this! I came across rhine-ml a while ago and thought it would have…",{"id":67,"by":11,"text":68},"11323160","Nope, sorry. And that was kind of the point I was making: in over a year, I've only been able to do the most foundational work in C++. It'll need another 2~3 years to feature…",[70,74],{"value":71,"source":54,"evidence":72},"C++",[73],{"id":57,"by":11,"text":58},{"value":75,"source":54,"evidence":76},"LLVM",[77],{"id":78},"post","unknown","prototype",{"praise":82,"objections":99,"requests":126,"questions":142,"alternatives":158},[83,95],{"value":84,"source":85,"evidence":86},"Building a language is hard and the effort is respected","commenter",[87,91],{"id":88,"by":89,"text":90},"11321467","davidw","Building any language is hard, so congrats! That said... the big thing about Elixir is that it's got Erlang and OTP behind it.",{"id":92,"by":93,"text":94},"11321571","sdegutis","> Building any language is hard, so congrats! Absolutely. Having tried to write a dead-simple Lua-like language [1], I can attest that it requires the programmer have a very…",{"value":96,"source":85,"evidence":97},"Project looks well thought out",[98],{"id":63,"by":64,"text":65},[100,110,118],{"value":101,"source":85,"evidence":102},"README lacks explanation of syntax like ~ and Int -> Int",[103,106],{"id":104,"by":50,"text":105},"11322628","I gave quick look at the example. First reactions coming from OO languages and Elixir: I can imagine that this ``` def addCandidate(A ~Int, B ~Int) do ``` means that addCandidate…",{"id":107,"by":108,"text":109},"11322852","auxym","Function signatures like (Int -> Int -> Int) should be familiar to anyone familiar with functional languages (f#, ocaml and haskell come to mind as having similar notation). I…",{"value":111,"source":85,"evidence":112},"Function signature syntax is unfamiliar to OO developers",[113,114],{"id":49,"by":50,"text":51},{"id":115,"by":116,"text":117},"11324745","phamilton","I think the bigger point of feedback is that anonymous function signatures are drastically different from defined function signatures.",{"value":119,"source":85,"evidence":120},"Elixir's main strength comes from Erlang\u002FOTP, which this lacks",[121,122],{"id":88,"by":89,"text":90},{"id":123,"by":124,"text":125},"11322476","AsyncAwait","Nice project. As was already mentioned, the main benefit of Elixir seems to come from BEAM, (Erlang VM) and its associated cockroach-like properties. There's also Crystal…",[127,131,138],{"value":128,"source":85,"evidence":129},"Remove the ~ type annotation character",[130],{"id":104,"by":50,"text":105},{"value":132,"source":85,"evidence":133},"Add tail call elimination",[134],{"id":135,"by":136,"text":137},"11323136","jupp0r","Does it have tail call elimination?",{"value":139,"source":85,"evidence":140},"Use a more familiar syntax for OO developers",[141],{"id":49,"by":50,"text":51},[143,150,154],{"value":144,"source":85,"evidence":145},"Why ~Function(Int -> Int -> Int) instead of ~Int -> Int -> Int",[146],{"id":147,"by":148,"text":149},"11350430","Kabie","Why `~Function(Int -> Int -> Int)` instead of `~Int -> Int -> Int`?",{"value":151,"source":85,"evidence":152},"Does it have tail call elimination",[153],{"id":135,"by":136,"text":137},{"value":155,"source":85,"evidence":156},"Is this a learning project",[157],{"id":63,"by":64,"text":65},[159,163,167],{"value":160,"source":85,"evidence":161},"Crystal",[162],{"id":123,"by":124,"text":125},{"value":164,"source":85,"evidence":165},"Clojure",[166],{"id":63,"by":64,"text":65},{"value":168,"source":54,"evidence":169},"OCaml",[170],{"id":57,"by":11,"text":58},{"comments":31,"answered":172,"key":173},4,[174,177,180],{"id":175,"text":176},"11323112","Yes, I'd implemented the syntax with the intention of doing currying, but haven't gotten around to doing that yet. If you want to do any \"partial application\", you need to write…",{"id":178,"text":179},"11323079","Thanks for the feedback. The ~ is a substitute for :, which is used in other languages for optional type annotations. You're right about removing ~ altogether, Go style.…",{"id":181,"text":182},"11323120","I needed a title. I could have said Elixir-inspired or Crystal-inspired, but few people know about Crystal. Although it's only minimally inspired by Elixir, I decided to go with…",{"commenters":184,"max_depth":41,"maker_replies":31,"first_comment_mins":185,"lifespan_hours":186},11,116,99,[188,190,192,194,196,200,202,204,206,207,208,210,212,213,215,217],[88,36,31,189,89,36],"maker\u002Fpositive\u002Fidea",[92,36,36,191,93,36],"commenter\u002Fneutral\u002Fnone",[104,32,41,193,50,36],"project\u002Fmixed\u002Fdocs",[107,32,41,195,108,36],"project\u002Fneutral\u002Fdocs",[197,32,41,198,199,36],"11322945","project\u002Fneutral\u002Fdesign","naasking",[175,32,36,201,11,32],"maker\u002Fneutral\u002Fexecution",[178,32,36,203,11,32],"maker\u002Fneutral\u002Fdocs",[115,32,32,205,116,36],"project\u002Fcritical\u002Fdesign",[49,32,32,205,50,36],[147,32,41,198,148,36],[123,30,41,209,124,36],"project\u002Fneutral\u002Fidea",[181,30,36,211,11,32],"maker\u002Fneutral\u002Fnone",[63,41,31,189,64,36],[57,41,36,214,11,32],"maker\u002Fneutral\u002Fdesign",[135,172,41,216,136,36],"project\u002Fneutral\u002Fexecution",[67,172,36,201,11,32],[],[220,225,230,234,238,242],{"id":221,"name":222,"points":223,"category":224},"11317811","Honest Salary",314,"web_saas",{"id":226,"name":227,"points":228,"category":229},"11324166","Localkube",173,"dev_tools",{"id":231,"name":232,"points":233,"category":20},"11334764","Quantum",151,{"id":235,"name":236,"points":237,"category":20},"11310485","English syntax highlighter",147,{"id":239,"name":240,"points":241,"category":229},"11327679","Micro",101,{"id":243,"name":244,"points":14,"category":245},"11322584","Datasets.co","learning_science",false,"v2",{"id":249,"name":5,"line":6,"ai":246,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":250,"top":18,"kw":251,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":252,"url":9,"mix":253,"praise":84,"objection":101,"sub":21},11321164,0.12,[21,24,25,26],"5033300113305030",[30,31,32,30],1793990940335]