[{"data":1,"prerenderedAt":206},["ShallowReactive",2],{"project-48356563":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":34,"aspects":35,"strip":40,"post_text":43,"what":44,"said":48,"maker_in_thread":129,"shape":137,"grid":140,"attempts":168,"same_week":169,"maker_shows":41,"maker_hidden":198,"reader_version":199,"card":200},"48356563","Prela","Purely Algebraic Relation Combinators","title","Show HN: Prela – Purely Algebraic Relation Combinators","https:\u002F\u002Fgithub.com\u002Fremysucre\u002Fprela","github.com","remywang",1780320361,2026,73,13,913,4366,21,"notable","data","query language","library",[24,21,25,26,27],"relational algebra","embedded query","tarski algebra of relations","columnar execution","curious",-0.067,{"positive":31,"neutral":32,"mixed":33,"critical":31},1,6,0,8,{"docs":36,"design":37,"idea":38,"execution":39},{"positive":33,"critical":31},{"positive":33,"critical":33},{"positive":31,"critical":33},{"positive":33,"critical":33},[33,31,41,41,33,42,33,41,41,33,41,33,41],3,5,"Prela is an embedded query language based on Tarski's Algebra of Relations. Its queries are concise, clear, and fast. It is implemented by shallow embedding in a host programming language: Prela operators are regular functions in the host. The implementation follows continuation-passing style which compiles to efficient columnar execution.",{"problem":45,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":46,"openness":47,"stage":47,"team_size":47},null,[],"unknown",{"praise":49,"objections":71,"requests":86,"questions":98,"alternatives":113},[50,57,65],{"value":51,"source":52,"evidence":53},"Claude translated SQL into Prela easily and optimized queries to be fast via fine-grained plan control","maker",[54],{"id":55,"by":11,"text":56},"48401265","Claude had no problem translating SQL into Prela, and because you have fine grained control over the query plan (a Prela query is a plan), it was able to optimize queries to be…",{"value":58,"source":59,"evidence":60},"Explicit control over the query plan is appealing compared to SQL","commenter",[61],{"id":62,"by":63,"text":64},"48401327","joelthelion","Having control over the execution plan is super interesting ! This is a very common frustration when writing SQL. Do you think it would be possible to offer Prela as a direct…",{"value":66,"source":52,"evidence":67},"No NULLs makes it has fewer pitfalls for humans and agents",[68],{"id":69,"by":11,"text":70},"48401948","There are fewer foot guns in Prela in particular no NULLs which should help both humans and robots.",[72,79],{"value":73,"source":59,"evidence":74},"Too many obscure symbols; not immediately readable",[75],{"id":76,"by":77,"text":78},"48400023","anentropic","> Prela queries are readable even to those new to the language Not really, too many obscure symbols. Certainly learnable but I wouldn't say immediately readable.",{"value":80,"source":59,"evidence":81},"Hard to displace SQL, JS and Excel given their entrenched use",[82],{"id":83,"by":84,"text":85},"48401203","cpard","SQL, JS, Excel are really hard to substitute because of how widely used they are by people. Even if something new comes up that it's objectively better, so far has always failed…",[87,91],{"value":88,"source":59,"evidence":89},"Offer Prela as an interface to a relational database",[90],{"id":62,"by":63,"text":64},{"value":92,"source":59,"evidence":93},"Add a DuckDB data source backend",[94],{"id":95,"by":96,"text":97},"48403426","ted_dunning","It would be pretty easy to put a DuckDB data source into this code. It might be pretty easy to use overloading to get special case implementations that form SQL queries…",[99,106],{"value":100,"source":59,"evidence":101},"Whether agents perform better writing Prela than SQL",[102,103],{"id":83,"by":84,"text":85},{"id":104,"by":84,"text":105},"48401377","I'm more curious about going from text to Prela instead of going from text to SQL and measuring any difference in the performance there. On one hand models have been trained on a…",{"value":107,"source":59,"evidence":108},"Why the heading says Simple (SPJ)",[109],{"id":110,"by":111,"text":112},"48402064","chowells","The heading saying \"Simple (SPJ)\" caught my eye, because I'm not sure SPJ has ever talked about simplicity in an especially referenceable way. Were you thinking of Rich Hickey's…",[114,121,125],{"value":115,"source":59,"evidence":116},"Morel, an ML dialect that compiles to Calcite",[117],{"id":118,"by":119,"text":120},"48400911","gavinray","Julian Hyde (Apache Calcite author) has a side project called Morel Morel is an ML dialect that can compile set-producing expressions into bytecode that Calcite can execute…",{"value":122,"source":59,"evidence":123},"SQL",[124],{"id":83,"by":84,"text":85},{"value":126,"source":59,"evidence":127},"DuckDB",[128],{"id":95,"by":96,"text":97},{"comments":130,"answered":41,"key":131},4,[132,133,136],{"id":55,"text":56},{"id":134,"text":135},"48401933","Yes, maybe not the language itself, but the ideas behind it. Tarski's Algebra of Relations is actually a better model for modern columns stores than the standard relational…",{"id":69,"text":70},{"commenters":34,"max_depth":42,"maker_replies":130,"first_comment_mins":138,"lifespan_hours":139},4436,78,[141,143,145,149,152,154,156,157,159,160,162,164,166],[118,33,33,142,119,33],"other\u002Fneutral\u002Fnone",[76,31,31,144,77,33],"project\u002Fcritical\u002Fdocs",[146,31,41,147,148,33],"48401666","project\u002Fneutral\u002Fdesign","WorldMaker",[83,150,41,151,84,33],2,"project\u002Fneutral\u002Fidea",[55,150,33,153,11,31],"project\u002Fpositive\u002Fperformance",[62,150,42,155,63,33],"project\u002Fpositive\u002Fidea",[134,150,33,155,11,31],[95,150,41,158,96,33],"project\u002Fneutral\u002Fexecution",[104,150,41,151,84,33],[69,150,33,161,11,31],"project\u002Fpositive\u002Fdesign",[110,41,41,163,111,33],"maker\u002Fneutral\u002Fdocs",[165,41,33,163,11,31],"48402128",[167,41,41,163,111,33],"48402174",[],[170,175,179,183,188,193],{"id":171,"name":172,"points":173,"category":174},"48304260","Hallucinate",442,"games",{"id":176,"name":177,"points":178,"category":174},"48308376","Continue? Y\u002FN",386,{"id":180,"name":181,"points":182,"category":174},"48367723","Eyeball",295,{"id":184,"name":185,"points":186,"category":187},"48374552","Edsger",264,"dev_tools",{"id":189,"name":190,"points":191,"category":192},"48344327","Test-Drive-3-Maps",215,"learning_science",{"id":194,"name":195,"points":196,"category":197},"48328184","Tiny-vLLM",205,"ai",false,"v2",{"id":201,"name":5,"line":6,"ai":198,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":202,"top":18,"kw":203,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":204,"url":9,"mix":205,"praise":51,"objection":73,"sub":21},48356563,-0.07,[24,21,25,26,27],"0133050330303",[31,32,33,31],1794036701909]