<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: mchav</title><link>https://news.ycombinator.com/user?id=mchav</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 02 Jun 2026 17:13:35 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mchav" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mchav in "Pandas feels clunky coming from R. What about Haskell?"]]></title><description><![CDATA[
<p>I think the original author picked this example to broadly illustrate how easy it is to make ad hoc changes to your query without worrying about lot about implementation details. Polars, for example, converges on a similar API and gives you the flexibility. You can iterate then refactor easily later to what you consider good practice.</p>
]]></description><pubDate>Wed, 22 Apr 2026 13:54:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47863678</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47863678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47863678</guid></item><item><title><![CDATA[Pandas feels clunky coming from R. What about Haskell?]]></title><description><![CDATA[
<p>Article URL: <a href="https://mchav.github.io/being-less-clunky/">https://mchav.github.io/being-less-clunky/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47859169">https://news.ycombinator.com/item?id=47859169</a></p>
<p>Points: 26</p>
<p># Comments: 7</p>
]]></description><pubDate>Wed, 22 Apr 2026 04:51:51 +0000</pubDate><link>https://mchav.github.io/being-less-clunky/</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47859169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47859169</guid></item><item><title><![CDATA[Interpretable models with boosting, symbolic regression and e-graphs]]></title><description><![CDATA[
<p>Article URL: <a href="https://mchav.github.io/grow-and-mow/">https://mchav.github.io/grow-and-mow/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47700514">https://news.ycombinator.com/item?id=47700514</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 09 Apr 2026 07:51:25 +0000</pubDate><link>https://mchav.github.io/grow-and-mow/</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47700514</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47700514</guid></item><item><title><![CDATA[What category theory teaches us about dataframes]]></title><description><![CDATA[
<p>Article URL: <a href="https://mchav.github.io/what-category-theory-teaches-us-about-dataframes/">https://mchav.github.io/what-category-theory-teaches-us-about-dataframes/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47561426">https://news.ycombinator.com/item?id=47561426</a></p>
<p>Points: 190</p>
<p># Comments: 65</p>
]]></description><pubDate>Sun, 29 Mar 2026 08:44:25 +0000</pubDate><link>https://mchav.github.io/what-category-theory-teaches-us-about-dataframes/</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47561426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47561426</guid></item><item><title><![CDATA[New comment by mchav in "Dataframe 1.0.0.0"]]></title><description><![CDATA[
<p>Had always hoped for something like this since the days of Spark and Frameless. Better late than never.<p>Now hoping to build a bunch of Neuro symbolic AI on top of this.</p>
]]></description><pubDate>Tue, 24 Mar 2026 05:10:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47498812</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47498812</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47498812</guid></item><item><title><![CDATA[New comment by mchav in "Dataframe 1.0.0.0"]]></title><description><![CDATA[
<p>No but something is in the works! We are building reactive notebooks that we will eventually give export capabilties.<p>You can try it from <a href="https://www.datahaskell.org/" rel="nofollow">https://www.datahaskell.org/</a> under "try out our current stack"</p>
]]></description><pubDate>Mon, 23 Mar 2026 22:53:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47496224</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47496224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47496224</guid></item><item><title><![CDATA[New comment by mchav in "Dataframe 1.0.0.0"]]></title><description><![CDATA[
<p>Author here: Would have loved to but this is round about my wedding anniversary. Will ask some Haskell friends to submit though.</p>
]]></description><pubDate>Mon, 23 Mar 2026 14:24:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47489992</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47489992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47489992</guid></item><item><title><![CDATA[New comment by mchav in "Dataframe 1.0.0.0"]]></title><description><![CDATA[
<p>Author here. At the time I worked in fraud detection and we needed to automate file generation for our BRMS. Initially created this to experiment with “models as dataframe expressions” and Haskell is great for DSL-like stuff. That work is still on going: <a href="https://github.com/DataHaskell/symbolic-regression" rel="nofollow">https://github.com/DataHaskell/symbolic-regression</a> and dataframe has a native sparse oblique tree implementation.<p>As it’s grown it’s been pretty cool to have transparent schema transformations instead of every function mapping a statement a dataframe you can have function signatures like:<p>```
extract ::  
  TypedDataFrame [Column "price" (Maybe Double), Column "quantity" Int, Column "comments" T.Text] ->
  TypedDataFrame [Column "price" (Maybe Double), Column "quantity" Int] 
-- body of extract<p>transform ::
  TypedDataFrame [Column "price" (Maybe Double), Column "quantity" Int] -> 
  TypedDataFrame [Column "price" Double, Column "quantity" Int]
-- body of transform<p>clean :: 
  TypedDataFrame [Column "price" (Maybe Double), Column "quantity" Int, Column "comments" T.Text] ->
  TypedDataFrame [Column "price" Double, Column "quantity" Int]
clean = transform . extract
```<p>But you can also do the simple thing too and only worry about type safety if you prefer:<p>```
df |> D.filterWhere (country_code .==. "JPN")
   |> D.select [F.name name]
   |> D.take 5
```<p>Being able to work across that whole spectrum of type safety is pretty great.</p>
]]></description><pubDate>Mon, 23 Mar 2026 14:20:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47489937</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47489937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47489937</guid></item><item><title><![CDATA[Show HN: Sabela – A Reactive Notebook for Haskell]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.datahaskell.org/blog/2026/03/01/sabela-reactive-haskell-notebooks.html">https://www.datahaskell.org/blog/2026/03/01/sabela-reactive-haskell-notebooks.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47214014">https://news.ycombinator.com/item?id=47214014</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 02 Mar 2026 04:50:12 +0000</pubDate><link>https://www.datahaskell.org/blog/2026/03/01/sabela-reactive-haskell-notebooks.html</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=47214014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47214014</guid></item><item><title><![CDATA[Show HN: Using an LLM as a "semantic regularizer" for feature engineering]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@mschavinda/pruning-over-engineered-features-with-help-from-an-llm-90e73e4f22ee">https://medium.com/@mschavinda/pruning-over-engineered-features-with-help-from-an-llm-90e73e4f22ee</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46658934">https://news.ycombinator.com/item?id=46658934</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 17 Jan 2026 15:45:37 +0000</pubDate><link>https://medium.com/@mschavinda/pruning-over-engineered-features-with-help-from-an-llm-90e73e4f22ee</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46658934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46658934</guid></item><item><title><![CDATA[Learning better decision trees – LLMs as Heuristics for Program Synthesis]]></title><description><![CDATA[
<p>Article URL: <a href="https://mchav.github.io/learning-better-decision-tree-splits/">https://mchav.github.io/learning-better-decision-tree-splits/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46655701">https://news.ycombinator.com/item?id=46655701</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 17 Jan 2026 05:58:14 +0000</pubDate><link>https://mchav.github.io/learning-better-decision-tree-splits/</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46655701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46655701</guid></item><item><title><![CDATA[State of Haskell Survey 2025]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.surveymonkey.com/r/6M3Z6NV">https://www.surveymonkey.com/r/6M3Z6NV</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46241575">https://news.ycombinator.com/item?id=46241575</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 12 Dec 2025 07:01:38 +0000</pubDate><link>https://www.surveymonkey.com/r/6M3Z6NV</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46241575</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46241575</guid></item><item><title><![CDATA[Haskell IS a great language for data science]]></title><description><![CDATA[
<p>Article URL: <a href="https://jcarroll.com.au/2025/12/05/haskell-is-a-great-language-for-data-science/">https://jcarroll.com.au/2025/12/05/haskell-is-a-great-language-for-data-science/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46157705">https://news.ycombinator.com/item?id=46157705</a></p>
<p>Points: 6</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 05 Dec 2025 07:33:02 +0000</pubDate><link>https://jcarroll.com.au/2025/12/05/haskell-is-a-great-language-for-data-science/</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46157705</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46157705</guid></item><item><title><![CDATA[New comment by mchav in "Comparing xeus-Haskell and ihaskell kernels"]]></title><description><![CDATA[
<p>RE Jupyter not having advanced features.<p>Yeah it's a bummer. It seems that notebooks that support these sort of "reactive" workflows are custom built around that model. Marimo, Pluto.jl, and observable are mostly language specific. Creating one would be non trivial.<p>Do you have your approach documented (tutorial style) anywhere?</p>
]]></description><pubDate>Sat, 29 Nov 2025 19:46:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46090204</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46090204</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46090204</guid></item><item><title><![CDATA[New comment by mchav in "Comparing xeus-Haskell and ihaskell kernels"]]></title><description><![CDATA[
<p>The rule of thumb is somewhere between 5 and 10x difference. Which is large if you're going to do anything heavy but for most practical purposes it's fine. Roughly the difference between C and Python.</p>
]]></description><pubDate>Sat, 29 Nov 2025 19:43:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46090181</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46090181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46090181</guid></item><item><title><![CDATA[Comparing xeus-Haskell and ihaskell kernels]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.datahaskell.org/blog/2025/11/25/a-tale-of-two-kernels.html">https://www.datahaskell.org/blog/2025/11/25/a-tale-of-two-kernels.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46054661">https://news.ycombinator.com/item?id=46054661</a></p>
<p>Points: 13</p>
<p># Comments: 8</p>
]]></description><pubDate>Wed, 26 Nov 2025 06:13:26 +0000</pubDate><link>https://www.datahaskell.org/blog/2025/11/25/a-tale-of-two-kernels.html</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=46054661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46054661</guid></item><item><title><![CDATA[Welcome to DataHaskell]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.datahaskell.org/blog/2025/11/11/welcome-to-datahaskell.html">https://www.datahaskell.org/blog/2025/11/11/welcome-to-datahaskell.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45894069">https://news.ycombinator.com/item?id=45894069</a></p>
<p>Points: 6</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 11 Nov 2025 22:59:22 +0000</pubDate><link>https://www.datahaskell.org/blog/2025/11/11/welcome-to-datahaskell.html</link><dc:creator>mchav</dc:creator><comments>https://news.ycombinator.com/item?id=45894069</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45894069</guid></item></channel></rss>