<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: the_unproven</title><link>https://news.ycombinator.com/user?id=the_unproven</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 02 Aug 2026 23:29:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=the_unproven" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by the_unproven in "Show HN: Fuse – statically typed functional programming language"]]></title><description><![CDATA[
<p>`Self` isn't the applied type (`List[A]`), rather it's the type constructor of kind `* -> *` constrained by `Functor`. In the map example it gets desugared into:<p><pre><code>  fun map[Self: Functor, A, B](self: Self[A], f: A -> B) -> Self[B];
</code></pre>
Since `Self` is the unapplied constructor, `Self[B]` just means `Functor[B]` e.g. `List[B]` not `List[A][B]`.<p>The example you've shown with `SizedFunctor` is not currently supported, as support for associated types is not yet implemented. I got it on the roadmap tho!</p>
]]></description><pubDate>Sun, 02 Aug 2026 19:34:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49147560</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49147560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49147560</guid></item><item><title><![CDATA[New comment by the_unproven in "Show HN: Fuse – statically typed functional programming language"]]></title><description><![CDATA[
<p>Yeah the LSP support is next, my goal is to implement the language server in the fuse itself. At the moment there’s a simple formatter implementation fusefmt: <a href="https://github.com/fuselang/fuse/blob/master/examples/fusefmt.fuse" rel="nofollow">https://github.com/fuselang/fuse/blob/master/examples/fusefm...</a>, you can compile it with fuse and hook-it with your editor.<p>For example I’ve this config in helix:<p><pre><code>  [[language]]                                                                                                                       
  name = "fuse"                                                                                                                      
  scope = "source.fuse"                                                                                                              
  file-types = ["fuse"]                                                                                                              
  injection-regex = "fuse"                                                                                                           
  comment-token = "#"                                                                                                                
  indent = { tab-width = 2, unit = "  " }                                                                                            
  auto-format = true                                                                                                                 
  formatter = { command = "fusefmt" }                                                                                                
                                                                                                                                     
  [[grammar]]                                                                                                                        
  name = "fuse"                                                                                                                      
  source = { git = "https://github.com/stevanmilic/tree-sitter-fuse", rev = "eb5698f4867a4192064e54a92be280f4d2130e03" }</code></pre></p>
]]></description><pubDate>Sun, 02 Aug 2026 15:48:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=49145632</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49145632</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49145632</guid></item><item><title><![CDATA[New comment by the_unproven in "Show HN: Fuse – statically typed functional programming language"]]></title><description><![CDATA[
<p>Haskell is a great language with a really advanced type-system, although I found its syntax hard to read at times especially as I was exploring the language at first. On the other hand I really liked how Rust syntax was defined in terms of ADTs, Traits & Methods Impls, with type signatures required for functions. Hence I wished for a similar functional language that has such write-style and type concepts, but stripping away the borrow checker, mutations, etc.</p>
]]></description><pubDate>Sun, 02 Aug 2026 14:49:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49145185</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49145185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49145185</guid></item><item><title><![CDATA[New comment by the_unproven in "Show HN: Fuse – statically typed functional programming language"]]></title><description><![CDATA[
<p>First of all thanks for all the feedback and looking into it, appreciate it!<p>Yeah GRIN is a great project, it took a lot of debugging and analysis to make it compile 100% especially with monomorphization involved.<p>I'll look into Unicode support, makes total sense. Didn't scope it in initially. I can fix the site ligatures too, that's a fair remark.<p>> I don't really understand why you have an IO monad. The language isn't pure - `.exec()` means any function can perform IO actions no matter its type signature - so what's IO really for?<p>That's a fair point, I still left a place for `.exec()` to happen as un-handled side-effect. But the preference is with using the IO monad as the stdlib is built around it, with `main() -> IO[i32]` as a type signature. As languages evolves I'm planning to build a runtime around IO execution, and build more constraints for handling strict side-effects. However for this initial stage of the language, I left it as a really simple solution.<p>>  Do `impl` additions export? What happens when two libraries add the same function name with different signatures (or just bodies!) to a type's `impl` ?<p>For now the language doesn't support modules (libraries), I'm planning on adding it. At the moment it's a bit of undefined behavior, as overloading would occur with latest `impl` definition.<p>> Is currying automatic? It doesn't seem to be, but, eg, the `sum(x: i32, y: i32)` function theoretically could be called as `sum(5)` to create a closure, but this isn't a documented feature if so.<p>In the type-system it is automatic, and it successfully passes type checker as it's entirely built on top of lambda calculus. But there's an issue with codegen right now. I can def look into it and document it.</p>
]]></description><pubDate>Sun, 02 Aug 2026 13:59:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=49144787</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49144787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49144787</guid></item><item><title><![CDATA[Show HN: Fuse – statically typed functional programming language]]></title><description><![CDATA[
<p>Hi HN! I've been working on the fuse programming language, it's a statically typed purely functional language with higher-kinder types and ad-hoc polymorphism. It compiles to the GRIN whole-program optimizer, producing LLVM-generated native code.<p>Fuse supports ADTs, Generics, Type Methods, Traits, Pattern matching etc. all in a functional style with no mutations.<p>I’ve been developing the language for 5 years, with code written in Scala. I’ve started coding the language from the base of System F that was implemented as part of the book: Types and Programming Languages (tapl). And then extending with concepts such as Bidirectional Type Checking with Higher-Rank Polymorphism.<p>I’ve mainly drawn inspiration from Rust, Haskell, Scala and Python (in terms of syntax). It all started because I wanted a language that has Rust-like concepts such as: ADT, Traits, Impl block syntax, etc. but have the pure functional semantics.<p>I'd would love feedback on the language design and its general usage.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49143412">https://news.ycombinator.com/item?id=49143412</a></p>
<p>Points: 100</p>
<p># Comments: 29</p>
]]></description><pubDate>Sun, 02 Aug 2026 11:23:56 +0000</pubDate><link>https://fuselang.org</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49143412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49143412</guid></item><item><title><![CDATA[Fuse Programming Language]]></title><description><![CDATA[
<p>Article URL: <a href="https://fuselang.org">https://fuselang.org</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49135011">https://news.ycombinator.com/item?id=49135011</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 01 Aug 2026 14:56:45 +0000</pubDate><link>https://fuselang.org</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=49135011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49135011</guid></item><item><title><![CDATA[Your Statement is 100% correct but misses the entire point]]></title><description><![CDATA[
<p>Article URL: <a href="https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-but.html">https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-but.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=22850843">https://news.ycombinator.com/item?id=22850843</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 12 Apr 2020 20:33:24 +0000</pubDate><link>https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-but.html</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=22850843</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22850843</guid></item><item><title><![CDATA[New comment by the_unproven in "Is Go Duck-Typed?"]]></title><description><![CDATA[
<p>I just recently found out about these two types of system. It's strange how people (like shown in the article) don't emphasize(know) it when talking about types in languages.<p>Interestingly, python has included structural subtyping in 3.8[1] as part of the typing module.<p>[1] <a href="https://www.python.org/dev/peps/pep-0544/" rel="nofollow">https://www.python.org/dev/peps/pep-0544/</a></p>
]]></description><pubDate>Wed, 04 Mar 2020 19:48:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=22487288</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=22487288</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22487288</guid></item><item><title><![CDATA[New comment by the_unproven in "Why events are a bad idea for high-concurrency servers (2003) [pdf]"]]></title><description><![CDATA[
<p>Events can handle much more connections than a thread based approach. For example nginx is implemented with event-driven architecture: <a href="https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/" rel="nofollow">https://www.nginx.com/blog/inside-nginx-how-we-designed-for-...</a><p>> NGINX scales very well to support hundreds of thousands of connections per worker process. Each new connection creates another file descriptor and consumes a small amount of additional memory in the worker process. There is very little additional overhead per connection. NGINX processes can remain pinned to CPUs. Context switches are relatively infrequent and occur when there is no work to be done.<p>> In the blocking, connection‑per‑process approach, each connection requires a large amount of additional resources and overhead, and context switches (swapping from one process to another) are very frequent.<p>This is their explanation on events vs threading approach. Still, a lot of web servers today use a thread-per-connection which is acceptable since a database(e.g. postgres) performance degrades slowly as more active connections are introduced.[1]<p>[1] <a href="https://brandur.org/postgres-connections" rel="nofollow">https://brandur.org/postgres-connections</a></p>
]]></description><pubDate>Thu, 30 Jan 2020 22:07:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=22196309</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=22196309</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22196309</guid></item><item><title><![CDATA[New comment by the_unproven in "Goodbye, Clean Code"]]></title><description><![CDATA[
<p>I also think it's fine to change the code someone wrote. Just because someone wrote it, doesn't mean it's the right way to do it. I often find myself rewriting the code, it's the natural process of code evolution. It just feels that it should be more readable, efficient etc.<p>Although, if the change is essential or it requires more pair of eyes, I'll just make a PR(MR) and let the people review it.</p>
]]></description><pubDate>Sat, 11 Jan 2020 22:26:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=22022805</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=22022805</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=22022805</guid></item><item><title><![CDATA[New comment by the_unproven in "A Famous Photo of Chernobyl’s Most Dangerous Radioactive Material (2016)"]]></title><description><![CDATA[
<p>Reminds of a movie from Andrei Tarkovsky, Stalker. The guy may be the Stalker, leading people to the center of the Zone - the elephant foot in this case.</p>
]]></description><pubDate>Sat, 23 Feb 2019 17:29:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=19234330</link><dc:creator>the_unproven</dc:creator><comments>https://news.ycombinator.com/item?id=19234330</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19234330</guid></item></channel></rss>