[{"data":1,"prerenderedAt":392},["ShallowReactive",2],{"project-28164398":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":91,"maker_in_thread":206,"shape":217,"grid":222,"attempts":356,"same_week":357,"maker_shows":34,"maker_hidden":384,"reader_version":385,"card":386},"28164398","lisp-rosetta-stone","Lisp implementation in modern Java, Go, C#, TypeScript, Python","title","Show HN: Lisp implementation in modern Java, Go, C#, TypeScript, Python","https:\u002F\u002Fgithub.com\u002Featonphil\u002Flisp-rosetta-stone","github.com","eatonphil",1628819752,2021,128,57,398,2533,16,"notable","languages","language implementation comparison","other",[24,25,26,27],"lisp interpreter","language verbosity","rosetta stone","lisp implementation","curious",-0.016,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,12,2,5,23,{"design":37,"execution":39,"docs":42,"idea":43},{"positive":33,"critical":38},0,{"positive":40,"critical":41},1,3,{"positive":38,"critical":38},{"positive":40,"critical":40},[34,38,34,38,40,41,41,41,41,40,38,41,38,38,38,38,38,38,41,38,38,41,41,38,38,38,38,40,41,34,41,34,40,40,38,38,38,38,38,38],null,{"problem":47,"audience":45,"pricing":45,"motivation":59,"time_to_build":45,"stack":66,"openness":89,"stage":90,"team_size":90},{"value":48,"source":49,"evidence":50},"Compares verbosity of languages by writing the same small Lisp interpreter in each","commenter",[51,55],{"id":52,"by":53,"text":54},"28166734","oersted","Would be interesting to have some extra metrics besides line count regarding verbosity. My intuition based on experience is that Java\u002FC# might have much longer or more complex…",{"id":56,"by":57,"text":58},"28165692","throwaway34241","I think it's pretty clear from the description that it's only a ~250 line toy project. Looks like it's meant to act as a test for implementing the same project in different…",{"value":60,"source":49,"evidence":61},"Judge verbosity across languages by implementing the same interpreter",[62],{"id":63,"by":64,"text":65},"28165679","Turing_Machine","Producing a full-blown Lisp does not appear to be the primary purpose of this project Rather, it's an attempt to judge the verbosity of various languages by writing the same…",[67,73,77,81,85],{"value":68,"source":69,"evidence":70},"Java","maker",[71],{"id":72},"post",{"value":74,"source":69,"evidence":75},"Go",[76],{"id":72},{"value":78,"source":69,"evidence":79},"C#",[80],{"id":72},{"value":82,"source":69,"evidence":83},"TypeScript",[84],{"id":72},{"value":86,"source":69,"evidence":87},"Python",[88],{"id":72},"open_source","unknown",{"praise":92,"objections":112,"requests":151,"questions":173,"alternatives":185},[93],{"value":94,"source":49,"evidence":95},"Small and concise implementations; a nice idea for comparing languages",[96,100,104,108],{"id":97,"by":98,"text":99},"28166326","sillysaurusx","Jeez, 7 comments and not a single \"Well done.\" Well done. I love the smallness. Small is strong.",{"id":101,"by":102,"text":103},"28166721","0xdeadb00f","I'm impressed every implementation is under 300 lines. Very nice.",{"id":105,"by":106,"text":107},"28167323","Straw","Cute idea! It looks like several of your implementations have extremely similar styles. If you want to realistically compare verbosity between languages, it makes sense to adapt…",{"id":109,"by":110,"text":111},"28176961","nojvek","Damn. This is cool. I need to more of this. Write something in multiple languages to really get a feel for looking at it from multiple angles.",[113,125,136],{"value":114,"source":49,"evidence":115},"Line count alone is a weak verbosity metric; formatting and idioms skew results",[116,120,121],{"id":117,"by":118,"text":119},"28166420","muzster","is it fair to use line count alone ? maybe the character count should be used as well (excluding whitespace)",{"id":56,"by":57,"text":58},{"id":122,"by":123,"text":124},"28170328","simiones","Cool project! Interestingly, the actual size of the files is almost inversely distributed compared to the line count: Line count, sorted: C# 246, Java 247, TypeScript 253, Python…",{"value":126,"source":49,"evidence":127},"Toy project, not a real Lisp",[128,132],{"id":129,"by":130,"text":131},"28165525","nesarkvechnep","It has been discussed many times already. Projects like this don't produce a Lisp. It's a toy, Lisp-like language at best. Calling it a Lisp does a disservice to the proper…",{"id":133,"by":134,"text":135},"28166827","the-smug-one","Meh, I agree with the parent you're responding to. Calling these toys Lisp just leads to more ignorance in the general public. \"Oh, Lisp is so small and elegant\" and \"Lisp is…",{"value":137,"source":49,"evidence":138},"Implementations not idiomatic; TypeScript and C# could use modern features",[139,143,147],{"id":140,"by":141,"text":142},"28167367","geon","Very cool! I hate to be negative, but the typescript is terrible. Full strictness is a must. Once you have that, you will notice why the code is bad: You have a kind-property on…",{"id":144,"by":145,"text":146},"28166722","nodejs_rulez_1","Very good effort! RE: modern C# 1) you can use pattern matching instead of switching 2) you can use native named tuples instead of Item1\u002FItem2 ones",{"id":148,"by":149,"text":150},"28167710","andix","I thought the same, the c# Code is not very modern. It is possible to make it even nicer. But I guess it’s a great start, maybe I’ll submit a pull request :)",[152,161,168],{"value":153,"source":49,"evidence":154},"Use more idiomatic modern features in each language",[155,156,157],{"id":144,"by":145,"text":146},{"id":148,"by":149,"text":150},{"id":158,"by":159,"text":160},"28167714","pjmlp","When using Java 16 and C# 9 the code can almost be Rust\u002FHaskell like, even more in upcoming Java 17 and C# 10.",{"value":162,"source":49,"evidence":163},"Add tests",[164],{"id":165,"by":166,"text":167},"28165916","frogcoder","I know the project is probably for some fun. Since you already have a sample lisp code to test, why not write tests for it.",{"value":169,"source":49,"evidence":170},"Add more metrics than line count",[171,172],{"id":52,"by":53,"text":54},{"id":117,"by":118,"text":119},[174],{"value":175,"source":49,"evidence":176},"Why write TypeScript in this style rather than idiomatic JavaScript",[177,181],{"id":178,"by":179,"text":180},"28166132","arcosdev","Why would you write Typescript this way? The Lisp > EcmaScript should be way more terse.",{"id":182,"by":183,"text":184},"28171632","branneman","Agreed. But why choose if it's easy to add an idiomatic pure-JavaScript\u002FEcmaScript 2021 implementation to compare with as well?",[186,192,199],{"value":187,"source":49,"evidence":188},"Norvig's lispy.py in Python",[189],{"id":190,"by":106,"text":191},"28189507","Classes definitely make sense for some things, especially those that don't have a Python analogue, such as symbols. What do you gain by wrapping a native representation of the…",{"value":193,"source":49,"evidence":194},"MAL (make a lisp)",[195],{"id":196,"by":197,"text":198},"28166407","divs1210","MAL: https:\u002F\u002Fgithub.com\u002Fkanaka\u002Fmal",{"value":200,"source":49,"evidence":201},"Hissp",[202],{"id":203,"by":204,"text":205},"28178193","gilch","Hissp: https:\u002F\u002Fgithub.com\u002Fgilch\u002Fhissp",{"comments":31,"answered":40,"key":207},[208,211,214],{"id":209,"text":210},"28168162","I tried to stick with code I'd be happy to see in a pull request at work. I'm a huge fan of using classes for data so I argue that the use of classes here was fair. If you're…",{"id":212,"text":213},"28189608","> I think it could also probably benefit from using the string libraries a little more. Definitely agree. I forgot about some builtins like str.isdigit(), str.isalpha(). But Java…",{"id":215,"text":216},"28168140","Please somebody do! I'd like to see what more I've missed. Some cool things in there already were records and top level statements.",{"commenters":218,"max_depth":219,"maker_replies":31,"first_comment_mins":220,"lifespan_hours":221},42,7,165,111,[223,225,229,232,234,236,238,239,241,242,243,246,247,250,251,254,257,260,263,265,268,270,272,275,278,280,284,287,289,292,295,299,300,302,305,307,309,311,314,316,317,321,324,325,327,330,333,335,337,340,343,344,345,348,351,352,354],[97,38,34,224,98,38],"project\u002Fpositive\u002Fdesign",[226,38,38,227,228,38],"28166470","other\u002Fneutral\u002Fnone","ktpsns",[230,38,34,224,231,38],"28166483","krat0sprakhar",[105,40,41,233,106,38],"project\u002Fmixed\u002Fexecution",[209,40,38,235,11,40],"maker\u002Fneutral\u002Fexecution",[190,40,40,237,106,38],"project\u002Fcritical\u002Fexecution",[212,40,38,235,11,40],[144,33,41,240,145,38],"project\u002Fneutral\u002Fexecution",[148,33,41,233,149,38],[215,33,38,235,11,40],[244,33,41,240,245,38],"28178989","zigzag312",[122,41,41,240,123,38],[248,41,41,240,249,38],"28178357","lostmsu",[140,31,40,237,141,38],[252,34,38,227,253,38],"28167230","Kinrany",[52,255,41,256,53,38],6,"project\u002Fneutral\u002Fnone",[258,255,38,227,259,38],"28166948","zetalyrae",[261,255,38,227,262,38],"28167558","scns",[264,255,38,227,259,38],"28167676",[266,255,38,227,267,38],"28168576","kaba0",[269,255,38,227,262,38],"28168655",[271,255,38,227,267,38],"28168800",[273,255,38,227,274,38],"28169025","vips7L",[276,219,38,227,277,38],"28166908","gigatexal",[279,219,38,227,253,38],"28167159",[281,219,41,282,283,38],"28167250","project\u002Fneutral\u002Fdocs","actually_a_dog",[285,219,38,227,286,38],"28168653","mikelevins",[288,219,38,227,277,38],"28168793",[290,219,38,227,291,38],"28212034","masijo",[293,219,38,227,294,38],"28169222","magpi3",[296,297,41,256,298,38],"28166504",8,"kubb",[158,297,41,256,159,38],[301,297,38,227,298,38],"28167981",[303,297,38,304,11,40],"28168146","maker\u002Fneutral\u002Fnone",[306,297,38,227,159,38],"28168851",[308,297,38,227,298,38],"28179173",[310,297,38,227,298,38],"28179704",[312,297,38,227,313,38],"28203614","fishmaster",[178,315,40,237,179,38],9,[182,315,41,240,183,38],[318,319,41,240,320,38],"28168572",10,"yyyk",[109,322,34,323,110,38],11,"project\u002Fpositive\u002Fidea",[165,32,41,240,166,38],[117,326,41,256,118,38],13,[101,328,34,329,102,38],14,"project\u002Fpositive\u002Fexecution",[129,331,40,332,130,38],15,"project\u002Fcritical\u002Fidea",[63,331,38,334,64,38],"commenter\u002Fneutral\u002Fnone",[56,331,40,336,57,38],"project\u002Fcritical\u002Fnone",[338,331,38,334,339,38],"28165827","igouy",[341,331,38,334,342,38],"28165970","jyriand",[196,331,38,227,197,38],[203,331,38,227,204,38],[346,331,38,227,347,38],"28178365","martyalain",[349,331,38,334,350,38],"28166732","fsloth",[133,331,38,334,134,38],[353,331,38,334,350,38],"28167471",[355,331,38,334,159,38],"28167893",[],[358,362,367,372,377,380],{"id":359,"name":360,"points":361,"category":20},"28207662","Imba",1216,{"id":363,"name":364,"points":365,"category":366},"28221904","DIY-ai-art",399,"creative",{"id":368,"name":369,"points":370,"category":371},"28167358","Nomad Visa",285,"productivity",{"id":373,"name":374,"points":375,"category":376},"28223515","Pop.com",225,"dev_tools",{"id":378,"name":379,"points":220,"category":376},"28191450","Burst",{"id":381,"name":382,"points":383,"category":371},"28170609","per.quest",134,false,"v2",{"id":387,"name":5,"line":6,"ai":384,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":388,"top":18,"kw":389,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":390,"url":9,"mix":391,"praise":94,"objection":114,"sub":21},28164398,-0.02,[24,25,26,27],"5050133331030000003003300001353511000000",[31,32,33,34],1794036610017]