[{"data":1,"prerenderedAt":468},["ShallowReactive",2],{"project-28725803":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":34,"aspects":35,"strip":45,"post_text":46,"what":47,"said":66,"maker_in_thread":175,"shape":186,"grid":191,"attempts":429,"same_week":430,"maker_shows":43,"maker_hidden":460,"reader_version":461,"card":462},"28725803","PomPom","Dependently typed language for proofs that you can implement in one day","title","Show HN: Dependently typed language for proofs that you can implement in one day","https:\u002F\u002Fgithub.com\u002Fcaotic123\u002FPomPom-Language","github.com","caotic123",1633146610,2021,138,96,369,2533,15,"notable","languages","dependently typed language","other",[24,25,26,21],"dependent types","proof assistant","type theory","roasted",-0.358,{"positive":30,"neutral":31,"mixed":32,"critical":33},5,7,0,13,25,{"design":36,"docs":38,"execution":40,"idea":41,"performance":44},{"positive":37,"critical":30},2,{"positive":32,"critical":39},4,{"positive":32,"critical":37},{"positive":42,"critical":43},3,1,{"positive":32,"critical":43},[42,32,32,43,43,42,32,32,42,43,43,43,43,32,30,30,42,43,43,42,43,43,43,43,32,30,32,30,43,32,32,32,32,32,30,32,32,32,32,32],null,{"problem":46,"audience":48,"pricing":46,"motivation":46,"time_to_build":46,"stack":55,"openness":64,"stage":65,"team_size":65},{"value":49,"source":50,"evidence":51},"People with functional programming and type systems experience, such as type theory researchers and students","maker",[52],{"id":53,"by":11,"text":54},"28726281","I think you misunderstood, I have just made an analogy with BASiC. BASIC is normally a language that students used to implement when they are dealing with compiler topics. The…",[56],{"value":57,"source":58,"evidence":59},"Lisp-style syntax","commenter",[60],{"id":61,"by":62,"text":63},"28726229","Twirrim","> Pompom language is so simple that you can implement it yourself just by looking in the source code (you can think that our language is the BASIC language of proof assistants).…","open_source","unknown",{"praise":67,"objections":79,"requests":107,"questions":119,"alternatives":147},[68],{"value":69,"source":58,"evidence":70},"Simple and accessible design for learning dependent types",[71,75],{"id":72,"by":73,"text":74},"28726537","dwohnitmok","I find the often ML-inspired syntax too high of a bar for most programmers to clear when being introduced to a language. I think a syntax more similar to something like what is…",{"id":76,"by":77,"text":78},"28727298","gpderetta","As someone that has very little idea of what all of that is, I think the title is great and certainly made me consider looking into the implementation. It might be wildly…",[80,95,102],{"value":81,"source":58,"evidence":82},"Syntax is too complex and hard for programmers to read",[83,87,91],{"id":84,"by":85,"text":86},"28726279","choeger","The syntax is quite ... complex, I dare say. It looks like you borrowed from Haskell, which already makes it hard to gain an intuitive understanding of the syntax and added bars?",{"id":88,"by":89,"text":90},"28734095","mbrodersen","The syntax is really bad. And I am familiar with Haskell, Lean, Idris, Agda etc. If the author reads this, I recommend instead copying the syntax used by Lean, Idris, or Agda.…",{"id":92,"by":93,"text":94},"28726434","jimsimmons","I’m constantly baffled by what functional programmers call “simple”. I’m sure this language does a lot with little but calling it simple is audacious to say the least. Why do so…",{"value":96,"source":58,"evidence":97},"Cannot be implemented in a day",[98],{"id":99,"by":100,"text":101},"28726501","isaac21259","Sorry but you cannot implement this in a day. I've written my own language very similar to this and from my experience it takes way longer. Implementing type checking for just…",{"value":103,"source":58,"evidence":104},"Title and claim of simplicity are overstated",[105,106],{"id":92,"by":93,"text":94},{"id":61,"by":62,"text":63},[108,112],{"value":109,"source":58,"evidence":110},"Use syntax from Lean, Idris or Agda",[111],{"id":88,"by":89,"text":90},{"value":113,"source":58,"evidence":114},"Fix the NonEmpty datatype definition",[115],{"id":116,"by":117,"text":118},"28727101","anfelor","The Readme defines: ``` \u002F\u002F Data NonEmpty = | New a (NonEmpty a) NonEmpty |A :: ~ * ~> * => {(list A) :: |new}. \u002F\u002F A list non-empty is list only with new constructor ``` The…",[120,130,140],{"value":121,"source":58,"evidence":122},"What foundations does it use and does it support inductive types",[123,127],{"id":124,"by":125,"text":126},"28726148","cjfd","What exactly are the foundations of this? The rules on the page suggest that it is basically the calculus of constructions but the example involving the list suggests that there…",{"id":128,"by":11,"text":129},"28726205","Pompom does not offer inductive data types, instead, it provides static symbols (as in the LF framework or λΠ-Calculus Modulo). Of course, we do not use the rewriting foundation…",{"value":131,"source":58,"evidence":132},"How strong normalization is possible given extensional type theory",[133,137],{"id":134,"by":135,"text":136},"28729689","mbid",">Pompom is an attractive implementation of an extensional (!) dependently typed language >Pompom provides [...] a strong normalization system How is this possible? Extensional…",{"id":138,"by":11,"text":139},"28732636","Oh, it is extensional in the sense of supporting K axiom, actually (not identity as propositional \u003C-> definitional) :).",{"value":141,"source":58,"evidence":142},"What kinds of proofs are used in real programs",[143],{"id":144,"by":145,"text":146},"28727254","bsaul","in practice, what kind of proof are people building when building real world programs ? Are people writing only top level assertion ( such as \"this main function always…",[148,158,162,169],{"value":149,"source":58,"evidence":150},"Coq",[151,155],{"id":152,"by":153,"text":154},"28726944","baddash","So, as someone who is curious but have no idea of the theoretical background here.. what should I learn in order to help me understand the code + use this language in a basic…",{"id":156,"by":11,"text":157},"28727135","I also recommend the software foundations in coq https:\u002F\u002Fsoftwarefoundations.cis.upenn.edu\u002F.",{"value":159,"source":58,"evidence":160},"Lean, Idris, Agda",[161],{"id":88,"by":89,"text":90},{"value":163,"source":58,"evidence":164},"TLA+",[165],{"id":166,"by":167,"text":168},"28728543","erichocean","> So you are forced to choose between something efficient but with no built-in dependent types like Rust or an horribly inefficient dynamically typed languages. Or…use TLA+,…",{"value":170,"source":50,"evidence":171},"Kind",[172],{"id":173,"by":11,"text":174},"28726490","Also, my current work\u002Fjob is using Kind as a foundation, the purpose of this language is exactly what you have asked for, give a check on https:\u002F\u002Fgithub.com\u002Fuwu-tech\u002FKind.",{"comments":18,"answered":31,"key":176},[177,180,183],{"id":178,"text":179},"28726632","The syntax you presented is really very accessible. Of course, it makes things a little more verbose, but I think you are right, the path for bringing more attention to dependent…",{"id":181,"text":182},"28732692","Yep, these codifications are just examples of what you can do, as Vmladenov said, try reading the examples above.",{"id":184,"text":185},"28726552","Well, half of it does not have to be necessarily implemented in the core (we are not talking of complex languages like Agda), but yeah, I think if you do not know anything about…",{"commenters":187,"max_depth":188,"maker_replies":18,"first_comment_mins":189,"lifespan_hours":190},46,10,83,329,[192,194,196,199,202,205,208,212,216,220,223,226,228,231,235,237,240,242,245,247,250,253,256,258,260,263,266,268,271,273,275,277,281,285,287,290,294,296,299,300,301,303,304,307,309,311,314,318,321,322,323,325,327,329,333,334,336,337,340,342,344,345,348,350,352,354,357,359,363,367,370,371,373,375,377,379,381,383,385,387,389,392,394,397,401,403,405,407,410,412,414,418,420,423,425,427],[72,32,42,193,73,32],"project\u002Fneutral\u002Fdesign",[178,32,32,195,11,43],"project\u002Fpositive\u002Fdesign",[197,32,32,198,73,32],"28726991","commenter\u002Fneutral\u002Fidea",[200,32,32,198,201,32],"28727131","arianvanp",[203,32,32,198,204,32],"28730072","ImprobableTruth",[206,32,32,198,207,32],"28737108","lapinot",[209,32,32,210,211,32],"28727336","other\u002Fpositive\u002Fnone","p4bl0",[213,32,43,214,215,32],"28727402","project\u002Fcritical\u002Fdocs","jb_s",[217,32,32,218,219,32],"28728470","commenter\u002Fneutral\u002Fdocs","alisonkisk",[221,32,43,214,222,32],"28730255","spinningslate",[224,32,32,218,225,32],"28731357","vmladenov",[181,32,32,227,11,43],"maker\u002Fneutral\u002Fdocs",[229,32,42,193,230,32],"28727870","Zababa",[232,32,32,233,234,32],"28735952","commenter\u002Fneutral\u002Fdesign","omegalulw",[236,32,32,233,207,32],"28736809",[238,32,32,233,239,32],"28738010","DemocracyFTW",[241,32,32,233,230,32],"28739010",[243,32,32,233,244,32],"28846921","dllthomas",[246,32,32,233,230,32],"28738969",[248,32,32,233,249,32],"28739592","rowanG077",[251,32,42,193,252,32],"28728810","amw-zero",[254,32,32,233,255,32],"28729753","andrewflnr",[99,43,43,257,100,32],"project\u002Fcritical\u002Fexecution",[184,43,32,259,11,43],"maker\u002Fneutral\u002Fexecution",[261,43,43,214,262,32],"28735639","igravious",[264,43,32,218,265,32],"28735763","strbean",[267,43,43,214,262,32],"28736215",[269,43,32,270,11,43],"28740228","maker\u002Fneutral\u002Fdesign",[272,43,43,257,244,32],"28845426",[274,43,32,259,11,43],"28740160",[144,37,42,276,145,32],"project\u002Fneutral\u002Fidea",[278,37,32,279,280,32],"28728143","other\u002Fneutral\u002Fidea","jacobparker",[282,37,32,283,284,32],"28731775","other\u002Fneutral\u002Fnone","kragen",[286,37,32,283,280,32],"28736580",[288,37,32,289,284,32],"28801808","commenter\u002Fneutral\u002Fnone",[291,37,30,292,293,32],"28728561","project\u002Fpositive\u002Fidea","nickdrozd",[295,37,30,292,252,32],"28728826",[297,37,42,276,298,32],"28729678","whateveracct",[124,42,42,193,125,32],[128,42,32,270,11,43],[134,39,43,302,135,32],"project\u002Fcritical\u002Fidea",[138,39,32,270,11,43],[305,39,32,306,11,43],"28732655","maker\u002Fpositive\u002Fperformance",[116,30,43,308,117,32],"project\u002Fcritical\u002Fdesign",[310,30,32,227,11,43],"28727126",[152,312,42,313,153,32],6,"project\u002Fneutral\u002Fdocs",[315,312,32,316,317,32],"28726970","other\u002Fneutral\u002Fdocs","evolveyourmind",[319,312,32,320,153,32],"28727024","commenter\u002Fpositive\u002Fnone",[156,312,32,316,11,43],[88,31,43,308,89,32],[324,31,32,270,11,43],"28740502",[84,326,43,308,85,32],8,[61,328,43,308,62,32],9,[330,328,32,331,332,32],"28726275","commenter\u002Fpositive\u002Fexecution","tluyben2",[53,328,32,227,11,43],[335,328,32,331,332,32],"28726296",[92,188,43,308,93,32],[338,188,32,218,339,32],"28726476","tome",[341,188,32,218,93,32],"28726548",[343,188,32,218,339,32],"28726573",[76,188,30,292,77,32],[346,188,32,347,11,43],"28740300","maker\u002Fpositive\u002Fidea",[349,188,32,289,230,32],"28728546",[351,188,32,270,11,43],"28726485",[173,188,32,353,11,43],"project\u002Fneutral\u002Fnone",[355,188,30,356,93,32],"28726541","maker\u002Fpositive\u002Fdesign",[358,188,32,289,332,32],"28726613",[360,188,43,361,362,32],"28727920","project\u002Fcritical\u002Fperformance","devit",[364,188,32,365,366,32],"28728366","commenter\u002Fneutral\u002Fperformance","zozbot234",[368,188,32,365,369,32],"28883030","AnthonBerg",[166,188,32,283,167,32],[372,188,32,289,366,32],"28728836",[374,188,32,289,167,32],"28729202",[376,188,32,289,366,32],"28729588",[378,188,32,289,167,32],"28729792",[380,188,32,283,252,32],"28728896",[382,188,32,283,167,32],"28729273",[384,188,32,289,252,32],"28731181",[386,188,32,289,167,32],"28734393",[388,188,32,289,252,32],"28740447",[390,188,32,283,391,32],"28730173","nextos",[393,188,32,283,167,32],"28738343",[395,188,30,195,396,32],"28726545","saithound",[398,188,32,399,400,32],"28727441","commenter\u002Fcritical\u002Fdesign","simion314",[402,188,32,233,93,32],"28733333",[404,188,32,289,400,32],"28734655",[406,188,32,289,93,32],"28735497",[408,188,32,409,400,32],"28735743","commenter\u002Fcritical\u002Fnone",[411,188,32,289,93,32],"28737061",[413,188,32,289,400,32],"28737644",[415,188,32,416,417,32],"28727507","other\u002Fneutral\u002Fdesign","TeMPOraL",[419,188,32,416,284,32],"28731861",[421,188,32,416,422,32],"28728078","carlmr",[424,188,32,416,230,32],"28728530",[426,188,32,289,252,32],"28728850",[428,188,32,283,89,32],"28734079",[],[431,436,441,446,450,455],{"id":432,"name":433,"points":434,"category":435},"28704873","Haxplore",603,"consumer_social",{"id":437,"name":438,"points":439,"category":440},"28765183","ChessCoach",506,"games",{"id":442,"name":443,"points":444,"category":445},"28758226","Hurl",223,"dev_tools",{"id":447,"name":448,"points":449,"category":445},"28718066","UI for Apache Kafka",158,{"id":451,"name":452,"points":453,"category":454},"28738141","SpotML",157,"ai",{"id":456,"name":457,"points":458,"category":459},"28775313","IndiePaper",146,"web_saas",false,"v2",{"id":463,"name":5,"line":6,"ai":460,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":464,"top":18,"kw":465,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":466,"url":9,"mix":467,"praise":69,"objection":81,"sub":21},28725803,-0.36,[24,25,26,21],"3001130031111055311311110505100000500000",[30,31,32,33],1794036611839]