[{"data":1,"prerenderedAt":429},["ShallowReactive",2],{"project-19810504":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":44,"post_text":45,"what":46,"said":71,"maker_in_thread":147,"shape":155,"grid":160,"attempts":391,"same_week":392,"maker_shows":157,"maker_hidden":421,"reader_version":422,"card":423},"19810504","Risp","Lisp in Rust","title","Show HN: Risp – Lisp in Rust","https:\u002F\u002Fm.stopa.io\u002Frisp-lisp-in-rust-90a0dad5b116","m.stopa.io","stopachka",1556819391,2019,314,84,92,2195,5,"legend","languages","lisp interpreter","cli",[24,25,26,27],"lisp","rust","interpreter","scheme","curious",-0.149,{"positive":31,"neutral":32,"mixed":33,"critical":34},3,23,0,10,36,{"design":37,"execution":40,"idea":42,"docs":43},{"positive":38,"critical":39},1,2,{"positive":33,"critical":41},4,{"positive":38,"critical":41},{"positive":33,"critical":33},[31,18,33,18,31,38,38,31,31,39,33,33,33,31,31,33,18,31,33,33,33,38,31,33,31,31,38,38,31,33,33,33,33,38,38,31,31,38,38,31],null,{"problem":45,"audience":45,"pricing":45,"motivation":47,"time_to_build":45,"stack":58,"openness":69,"stage":70,"team_size":69},{"value":48,"source":49,"evidence":50},"Toy project, following Norvig's Lisp tutorial in Rust","maker",[51,54],{"id":52,"by":11,"text":53},"19811569","Great question firethief! I think both approaches -- a) sticking close to rust and supporting beautiful interop, or b) creating our own GC and using interesting data structures…",{"id":55,"by":56,"text":57},"19812831","kibwen","I thought this was just going to be another forgettable \"X implemented in Y\", but this is actually a Rust-flavored version of Peter Norvig's classic \"(How to Write a (Lisp)…",[59],{"value":60,"source":49,"evidence":61},"Rust",[62,66],{"id":63,"by":64,"text":65},"19811164","dataking","> Finally, I have to say, I loved using Rust. It’s the least mental overhead I’ve had to maintain with a systems language, and it was a blast to use. This mirrors my experience…",{"id":67,"by":11,"text":68},"19811199","Awesome, thanks for the kind words dataking! :)","unknown","prototype",{"praise":72,"objections":79,"requests":97,"questions":113,"alternatives":125},[73],{"value":74,"source":75,"evidence":76},"Good read; Norvig-style walkthrough praised","commenter",[77,78],{"id":55,"by":56,"text":57},{"id":63,"by":64,"text":65},[80,90],{"value":81,"source":75,"evidence":82},"Errors stringified into RispErr::Reason(String) lose information",[83,87],{"id":84,"by":85,"text":86},"19812041","thenewwazoo","A bit of feedback to the author: I cringe really, really hard when I see things like: ``` #[derive(Debug)] enum RispErr { Reason(String), } ``` One of the beauties of Rust's type…",{"id":88,"by":85,"text":89},"19812159","Because I'm on my soapbox, I'll also recommend implementing ToString[1] right off the bat, too. That way you can print out useful error messages immediately. For example, if your…",{"value":91,"source":75,"evidence":92},"Tokenizer uses replace and split, which is fragile",[93],{"id":94,"by":95,"text":96},"19812986","kovrik","`tokenize` function looks weird. Why use replace and then split? How would you extend this to stirngs (which might contain \"()\" chars)? It might be OK in a toy example, but it…",[98],{"value":99,"source":75,"evidence":100},"Rename the project to Lust",[101,105,109],{"id":102,"by":103,"text":104},"19811357","kaycebasques","I would’ve went with “Lust”...",{"id":106,"by":107,"text":108},"19812670","slowrabbit","Should've gone with Lust it's way better than Risp.",{"id":110,"by":111,"text":112},"19815217","kristianov","Why is this named Risp? Lust is much better...",[114],{"value":115,"source":75,"evidence":116},"How would RispExp support circular lists and GC?",[117,121],{"id":118,"by":119,"text":120},"19811508","firethief","> `List(Vec\u003CRispExp>)` The big question when implementing a runtime for a Lisp-like language in Rust is how the interpreter will interact with the GC. It looks like this project…",{"id":122,"by":123,"text":124},"19813459","ridiculous_fish","RispEsp is a tree using value semantics. How will RispExp evolve to support e.g. circularly linked lists? How will that interact with Rust's ownership requirements?",[126,133,140],{"value":127,"source":75,"evidence":128},"Carp",[129],{"id":130,"by":131,"text":132},"19811437","msvan","If you like Rust and Lisp this is also a cool project: https:\u002F\u002Fgithub.com\u002Fcarp-lang\u002FCarp.",{"value":134,"source":75,"evidence":135},"ketos",[136],{"id":137,"by":138,"text":139},"19811615","hauleth","There is also quite older, but still maintained other implementation https:\u002F\u002Fgithub.com\u002Fmurarth\u002Fketos",{"value":141,"source":75,"evidence":142},"scheme.rs",[143],{"id":144,"by":145,"text":146},"19812613","hcs","I'm partial to scheme.rs [edit] Which apparently does exist: https:\u002F\u002Fgithub.com\u002Fisamert\u002Fscheme.rs",{"comments":148,"answered":31,"key":149},16,[150,151,152],{"id":52,"text":53},{"id":67,"text":68},{"id":153,"text":154},"19829597","This is a great suggestion eridius! I'll update it to use split_first. Note: updated the essay and left a thanks to you :)",{"commenters":156,"max_depth":157,"maker_replies":148,"first_comment_mins":158,"lifespan_hours":159},56,7,39,52,[161,163,165,169,173,175,177,179,180,184,186,190,193,196,199,201,203,206,208,211,214,218,222,225,228,230,233,236,239,242,245,248,249,252,254,256,259,261,265,267,271,273,275,277,279,282,284,287,288,290,292,295,297,300,303,305,308,310,313,317,321,323,328,331,333,336,338,340,342,345,349,352,354,357,359,363,367,369,372,376,380,383,385,387],[118,33,31,162,119,33],"project\u002Fneutral\u002Fdesign",[52,33,33,164,11,38],"maker\u002Fneutral\u002Fidea",[166,33,33,167,168,33],"19813476","commenter\u002Fneutral\u002Fdesign","etaoins",[170,33,18,171,172,33],"19814432","project\u002Fpositive\u002Fdesign","yellowapple",[174,33,33,167,119,33],"19821362",[176,33,33,167,172,33],"19821525",[63,38,18,178,64,33],"maker\u002Fpositive\u002Fnone",[67,38,33,178,11,38],[181,39,31,182,183,33],"19812550","project\u002Fneutral\u002Fexecution","eridius",[153,39,33,185,11,38],"maker\u002Fpositive\u002Fexecution",[187,31,38,188,189,33],"19811588","project\u002Fcritical\u002Fdesign","TehCorwiz",[191,31,33,192,11,38],"19811625","maker\u002Fneutral\u002Fdesign",[194,31,31,195,189,33],"19812806","maker\u002Fneutral\u002Fnone",[197,31,38,188,198,33],"19814684","uhryks",[102,41,31,200,103,33],"project\u002Fneutral\u002Fidea",[202,41,33,195,11,38],"19811407",[204,41,31,200,205,33],"19811640","dfee",[207,41,33,195,11,38],"19811670",[209,41,31,200,210,33],"19811509","zadler",[212,41,31,200,213,33],"19811984","sureaboutthis",[215,41,38,216,217,33],"19813238","project\u002Fcritical\u002Fidea","ben509",[219,41,33,220,221,33],"19814281","other\u002Fneutral\u002Fnone","Lowkeyloki",[223,41,33,220,224,33],"19814565","a_t48",[226,41,33,220,227,33],"19815336","girzel",[229,41,33,220,221,33],"19823126",[231,41,33,220,232,33],"19815429","auvi",[234,41,33,220,235,33],"19816816","teddyh",[237,41,33,220,238,33],"19817496","kitd",[240,41,31,200,241,33],"19812251","0815test",[243,41,31,162,244,33],"19816951","wuschel",[246,41,33,220,247,33],"19817174","steveklabnik",[144,41,33,220,145,33],[250,41,33,220,251,33],"19813947","lelf",[55,18,18,253,56,33],"project\u002Fpositive\u002Fidea",[255,18,33,178,11,38],"19829675",[130,257,31,258,131,33],6,"project\u002Fneutral\u002Fnone",[260,257,33,195,11,38],"19811490",[262,157,33,263,264,33],"19810982","commenter\u002Fneutral\u002Fnone","EamonnMR",[266,157,33,178,11,38],"19811048",[268,269,33,263,270,33],"19811768",8,"codr7",[272,269,33,178,11,38],"19811835",[274,269,33,263,270,33],"19811931",[137,276,33,220,138,33],9,[278,276,33,178,11,38],"19811658",[280,276,33,263,281,33],"19812640","burke",[84,34,38,283,85,33],"project\u002Fcritical\u002Fexecution",[285,34,33,286,11,38],"19812106","maker\u002Fneutral\u002Fexecution",[88,34,31,182,85,33],[289,34,33,263,11,38],"19812213",[291,34,33,263,85,33],"19812247",[293,34,31,182,294,33],"19812509","f-jin",[296,34,33,263,85,33],"19812588",[298,34,33,220,299,33],"19813562","nibbula",[301,34,31,182,302,33],"19813776","csomar",[304,34,33,185,11,38],"19829727",[306,34,38,283,307,33],"19812278","ken",[309,34,33,263,85,33],"19812331",[311,34,38,283,312,33],"19814737","MaulingMonkey",[314,34,31,315,316,33],"19815461","project\u002Fneutral\u002Fdocs","PrototypeNM1",[318,319,31,200,320,33],"19815472",11,"encse",[322,319,33,178,11,38],"19829682",[324,325,33,326,327,33],"19813130",12,"commenter\u002Fneutral\u002Fexecution","kazinator",[329,325,33,326,330,33],"19813274","rkangel",[332,325,33,326,327,33],"19813544",[334,325,33,326,335,33],"19813929","burntsushi",[337,325,33,326,327,33],"19814176",[339,325,33,326,335,33],"19814582",[341,325,33,326,327,33],"19814669",[343,325,33,326,344,33],"19814312","estebank",[346,347,38,216,348,33],"19812184",13,"asdfman123",[350,347,33,220,351,33],"19813493","the_duke",[94,353,38,283,95,33],14,[355,353,31,286,356,33],"19816225","stevekemp",[122,358,31,162,123,33],15,[360,148,33,361,362,33],"19814121","other\u002Fneutral\u002Fidea","paulddraper",[364,365,31,258,366,33],"19811123",17,"billsmithaustin",[368,365,33,178,11,38],"19811157",[370,365,31,258,371,33],"19811184","jakeinspace",[373,374,38,216,375,33],"19814771",18,"stshine",[377,378,31,258,379,33],"19819112",19,"etoipi1",[381,378,38,216,382,33],"19820430","_nalply",[106,384,31,258,107,33],20,[110,386,31,258,111,33],21,[388,389,31,258,390,33],"19817123",22,"hilaly",[],[393,398,403,407,411,416],{"id":394,"name":395,"points":396,"category":397},"19858015","CSSFX",595,"dev_tools",{"id":399,"name":400,"points":401,"category":402},"19827336","zfsp",411,"infrastructure",{"id":404,"name":405,"points":406,"category":20},"19862748","piet-metal",306,{"id":408,"name":409,"points":410,"category":402},"19811093","Faast.js",202,{"id":412,"name":413,"points":414,"category":415},"19847258","Full Help",197,"web_saas",{"id":417,"name":418,"points":419,"category":420},"19856799","RSS Search Engine",192,"data",false,"v2",{"id":424,"name":5,"line":6,"ai":421,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":425,"top":18,"kw":426,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":427,"url":9,"mix":428,"praise":74,"objection":81,"sub":21},19810504,-0.15,[24,25,26,27],"3505311332000330530001303311300001133113",[31,32,33,34],1794036577206]