[{"data":1,"prerenderedAt":247},["ShallowReactive",2],{"project-20006324":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":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":39,"post_text":41,"what":42,"said":71,"maker_in_thread":135,"shape":145,"grid":149,"attempts":200,"same_week":209,"maker_shows":238,"maker_hidden":239,"reader_version":240,"card":241},"20006324","G-Fu","a pragmatic Lisp embedded in Go","title","Show HN: G-Fu – a pragmatic Lisp embedded in Go","https:\u002F\u002Fgithub.com\u002Fcodr7\u002Fg-fu\u002Ftree\u002Fmaster\u002Fv1","github.com","codr7",1558743155,2019,123,23,376,2195,18,"notable","languages","embedded lisp","library",[24,25,26,27,28],"lisp","go","embedded language","interpreter","first class environments","mixed",-0.083,{"positive":32,"neutral":33,"mixed":34,"critical":33},1,2,0,5,{"execution":37,"performance":38},{"positive":34,"critical":32},{"positive":34,"critical":32},[34,35,34,40,34,32,34,32,34,34,34,34,34,34,34,34,34,34,34,34,34,40,34],3,null,{"problem":43,"audience":53,"pricing":41,"motivation":58,"time_to_build":41,"stack":62,"openness":69,"stage":70,"team_size":69},{"value":44,"source":45,"evidence":46},"Gophers want a more expressive language that composes well with Go code","maker",[47,50],{"id":48,"by":11,"text":49},"20007635","I'd guess an experimental Lisp interpreter embedded in Go is just too obvious :) But providing Gophers with a slightly more polished alternative that still composes well with…",{"id":51,"by":11,"text":52},"20007145","I've been considering compiling the interpreter as a shortcut to native executables, but to Go rather than its AST since that allows reusing the existing runtime. The main idea…",{"value":54,"source":55,"evidence":56},"Go programmers who want an expressive embedded scripting language","inferred",[57],{"id":48,"by":11,"text":49},{"value":59,"source":45,"evidence":60},"Provide a more expressive experience alongside Go while delegating heavy lifting to Go",[61],{"id":51,"by":11,"text":52},[63],{"value":64,"source":45,"evidence":65},"Go",[66],{"id":67,"by":11,"text":68},"20006830","Author here. It's still a young language and naive implementation focused on correctness, but I'm very happy with how its turning out. I'm especially fond of first class…","unknown","prototype",{"praise":72,"objections":78,"requests":93,"questions":98,"alternatives":113},[73],{"value":74,"source":75,"evidence":76},"First class environments and qualified identifiers are a flexible design","commenter",[77],{"id":67,"by":11,"text":68},[79,86],{"value":80,"source":75,"evidence":81},"First class environments may be slow",[82],{"id":83,"by":84,"text":85},"20008380","nudq","> first class environments Which are notorious for being unoptimizably slow > It reminds me of pcostanza's work on Context Oriented Programming and ContextL I'm not reminded at…",{"value":87,"source":75,"evidence":88},"Plugin-based loading does not work on Windows",[89],{"id":90,"by":91,"text":92},"20009257","irq-1","FYI, plugins in Go only work on linux and macos. Windows has the option to load dlls dynamically, but it is a different mechanism. If I remember right the Go devs were not…",[94],{"value":95,"source":75,"evidence":96},"Explain the Context Oriented Programming comparison",[97],{"id":83,"by":84,"text":85},[99,106],{"value":100,"source":75,"evidence":101},"How to add a real REPL if Go cannot load code at runtime",[102],{"id":103,"by":104,"text":105},"20007255","Scarbutt","If Go can't load code at runtime, how do you plan to add a \"real\" lisp REPL?",{"value":107,"source":75,"evidence":108},"How to call out to Go libraries",[109],{"id":110,"by":111,"text":112},"20007488","jstewartmobile","How do you call out to Go libraries with this?",[114,121,128],{"value":115,"source":75,"evidence":116},"Joker (Clojure in Go)",[117],{"id":118,"by":119,"text":120},"20007713","lincpa","Clojure in go: https:\u002F\u002Fgithub.com\u002Fcandid82\u002Fjoker",{"value":122,"source":75,"evidence":123},"Gisp (Lisp compiling to Go)",[124],{"id":125,"by":126,"text":127},"20008937","aasasd","Here it is, I think: https:\u002F\u002Fgithub.com\u002Fjcla1\u002Fgisp",{"value":129,"source":75,"evidence":130},"Goforth (Forth in Go)",[131],{"id":132,"by":133,"text":134},"20006978","azhenley","Thanks for posting this! I made a toy Forth in Go recently [1] but didn’t really know what I was doing. I’m going to check G-Fu out to understand how I should have implemented…",{"comments":136,"answered":35,"key":137},12,[138,139,142],{"id":67,"text":68},{"id":140,"text":141},"20006997","Cool. I've written my share of Forths, but none in Go. Lisp is definitely more involved, especially expanding macros and juggling environments. You're welcome :) Note that I'm…",{"id":143,"text":144},"20007532","It can using plugins from what I've seen. I'm not aiming for a regular Lisp though, g-fu is designed to be embedded in and complement Go first hand.",{"commenters":146,"max_depth":35,"maker_replies":136,"first_comment_mins":147,"lifespan_hours":148},10,160,38,[150,152,154,156,158,159,161,163,165,168,170,173,175,177,180,182,183,186,189,191,194,196,198],[67,34,34,151,11,32],"project\u002Fpositive\u002Fdesign",[132,34,35,153,133,34],"maker\u002Fpositive\u002Fnone",[140,34,34,155,11,32],"commenter\u002Fneutral\u002Fnone",[103,34,40,157,104,34],"project\u002Fneutral\u002Fexecution",[143,34,34,157,11,32],[90,34,32,160,91,34],"project\u002Fcritical\u002Fexecution",[162,34,34,157,11,32],"20009288",[83,34,32,164,84,34],"project\u002Fcritical\u002Fperformance",[166,34,34,167,11,32],"20015071","commenter\u002Fneutral\u002Fperformance",[118,32,34,169,119,34],"other\u002Fneutral\u002Fnone",[171,32,34,172,11,32],"20008070","project\u002Fneutral\u002Fdesign",[174,33,34,169,126,34],"20007106",[51,33,34,176,11,32],"project\u002Fneutral\u002Fperformance",[178,33,34,179,126,34],"20008979","other\u002Fneutral\u002Fperformance",[181,33,34,167,11,32],"20009013",[125,33,34,169,126,34],[184,33,34,185,11,32],"20009313","other\u002Fcritical\u002Fnone",[187,33,34,155,188,34],"20009455","JasonFruit",[190,33,34,155,11,32],"20009558",[192,40,34,169,193,34],"20007390","chias",[48,40,34,195,11,32],"project\u002Fneutral\u002Fidea",[110,197,40,157,111,34],4,[199,197,34,157,11,32],"20007518",[201,205,208],{"id":202,"t":203,"points":204,"comments":34},"19814545",1556845213,8,{"id":206,"t":207,"points":146,"comments":34},"19873057",1557440864,{"id":4,"t":12,"points":14,"comments":15},[210,215,220,224,229,233],{"id":211,"name":212,"points":213,"category":214},"20012687","nextdns.io",372,"infrastructure",{"id":216,"name":217,"points":218,"category":219},"20008466","tiptap",278,"dev_tools",{"id":221,"name":222,"points":223,"category":219},"20033728","Endoflife.date",248,{"id":225,"name":226,"points":227,"category":228},"20001339","Workstation",206,"consumer_social",{"id":230,"name":231,"points":232,"category":219},"20019877","youtube-dl-interactive",196,{"id":234,"name":235,"points":236,"category":237},"20024448","Imgsquash",178,"creative",11,false,"v2",{"id":242,"name":5,"line":6,"ai":239,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":243,"top":18,"kw":244,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":245,"url":9,"mix":246,"praise":74,"objection":80,"sub":21},20006324,-0.08,[24,25,26,27,28],"05030101000000000000030",[32,33,34,33],1794036577835]