#Haskell

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 24, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Non-Obvious Haskell Idiom: Conditional For

entropicthoughts.com/non-obvio

Discussions: discu.eu/q/https://entropictho

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Ramas de un árbol. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 12/2025

discu.eu/weekly/haskell/2025/1

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Exercitium (Un reto diario de programación). jaalonso.github.io/exercitium/

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

GHC 9.6.7 is now available!

discourse.haskell.org/t/ghc-9-

GHC 9.6.7 available
ALT text detailsGHC 9.6.7 available
José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 23, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] GHCup 0.1.50.0 released - Announcements

discourse.haskell.org/t/ann-gh

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Valores de polinomios representados con vectores. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 22, 2025. jaalonso.github.io/vestigium/p

dilawar's avatar
dilawar

@dilawar@fosstodon.org

An underappreciated feature of is that Rust code found in the wild is very much likely to work and is of good quality. The crate doesn't have to be super mature!

My experience with code in the wild is much much better than JS or python code which is not suprising if you think about it. Programmers coding in
"hard" languages generally write better code? Perhaps same thing is with and ?

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Segmentos maximales con elementos consecutivos. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GHC String Interpolation - Final Call for prototypes

discourse.haskell.org/t/ghc-st

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Learn Haskell by example. ~ Phillip Hagenlocher. books.google.com/books?id=n38p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Non-obvious Haskell idiom: Guard-sequence. ~ kqr. entropicthoughts.com/non-obvio

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 21, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

US to limit Canadian access to built on border Haskell Free Library & Opera House

bostonglobe.com/2025/03/20/met

Discussions: discu.eu/q/https://www.bostong

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[Well-Typed] GHC activities report: December 2024-February 2025

well-typed.com/blog/2025/03/gh

Discussions: discu.eu/q/https://www.well-ty

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Curso "Programación declarativa (2008-09)". jaalonso.github.io/cursos/pd-0

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

A hundred pull requests for Liquid Haskell. ~ Facundo Domínguez. tweag.io/blog/2025-03-20-lh-re

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

A hundred pull requests for Liquid Haskell. ~ Facundo Domínguez. tweag.io/blog/2025-03-20-lh-re

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Lista cuadrada. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Push it to the limit!

muratkasimov.art/Ya/Articles/P

Discussions: discu.eu/q/https://muratkasimo

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 20, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

haskell-dev-env - An opinionated pre-built Dev Container for Haskell

github.com/marijnvanwezel/hask

Discussions: discu.eu/q/https://github.com/

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

I wonder if initiatives like the Haskell Error Index errors.haskell.org/ become more important now that we have AI coding assistants that can potentially access the error descriptions in order to steer themselves.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Non-Obvious Haskell Idiom: Guard-Sequence

entropicthoughts.com/non-obvio

Discussions: discu.eu/q/https://entropictho

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Open Source at Bellroy: Supporting Old GHC Versions

exploring-better-ways.bellroy.

Discussions: discu.eu/q/https://exploring-b

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Máximos locales. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making a multiplayer action game in Haskell

gitlab.com/-/snippets/4817016

Discussions: discu.eu/q/https://gitlab.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 19, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Matrices de Toepliz. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 18, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell debugging in Neovim with breakpoints is giving error

reddit.com/r/neovim/comments/1

Discussions: discu.eu/q/https://www.reddit.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Curso "Programación declarativa (2007-08)". jaalonso.github.io/cursos/pd-0

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Suma si todos los valores son justos. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 17, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell Interlude 63: Farhad Mehta

haskell.foundation/podcast/63/

Discussions: discu.eu/q/https://haskell.fou

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] Copilot 4.3

github.com/nasa/ogma

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Primos equidistantes. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 11/2025

discu.eu/weekly/haskell/2025/1

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The calculated typer. ~ Zac Garby, Patrick Bahr, Graham Hutton. bahr.io/pubs/files/calctyper-p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 16, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] bearlibterminal v0.1 - Haskell bindings to the BearLibTerminal graphics library for roguelike games.

foo.wyrd.name/en:bearlibtermin

Discussions: discu.eu/q/http://foo.wyrd.nam

Monoka's avatar
Monoka

@GerryT@mastodon.social

Share of programming languages used by / applications (2025-03-16):

28%
21%
20%
17%
06% ++
06%
04% Other:

63% use GTK4 (90% of them use ), while still 37% use GTK3

Method: Source [1] lists 543 awesome (3/4) applications and their

[1] github.com/valpackett/awesome-

@GTK @gnome

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Anagramas. jaalonso.github.io/exercitium/

Monoka's avatar
Monoka

@GerryT@mastodon.social

Share of programming languages used by / applications (2025-03-16):

28%
21%
20%
17%
06% ++
06%
04% Other:

63% use GTK4 (90% of them use ), while still 37% use GTK3

Method: Source [1] lists 543 awesome (3/4) applications and their

[1] github.com/valpackett/awesome-

@GTK @gnome

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Using lens-aeson to implement FromJSON

magnus.therning.org/2025-03-16

Discussions: discu.eu/q/https://magnus.ther

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 15, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] First release candidate for Stack 3.5.1

github.com/commercialhaskell/s

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Primos consecutivos con media capicúa. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 14, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Aztecs v0.10: A modular game-engine and ECS for Haskell (now with a simpler design featuring applicative queries and monadic systems)

github.com/aztecs-hs/aztecs

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GHC 9.12.2 is now available

discourse.haskell.org/t/ghc-9-

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 13, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Curry: A Truly Integrated Functional Logic Programming Language

curry-lang.org

Discussions: discu.eu/q/https://curry-lang.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

A Short Survey on Type-Driven Development Tools

tudelft.fra1.qualtrics.com/jfe

Discussions: discu.eu/q/https://tudelft.fra

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Determinación de los elementos minimales. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The Haskell Unfolder Episode 40: Understanding through a model. ~ Edsko de Vries, Andres Löh. youtube.com/live/0QTt2W7CVnA

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 12, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

The Haskell Unfolder Episode 40: understanding through a model

youtube.com/watch?index=40&lis

Discussions: discu.eu/q/https://www.youtube

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

LambdaConf's schedule has a couple of Haskell talks. Anyone going?

lambdaconf.us/schedule

Discussions: discu.eu/q/https://www.lambdac

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: La bandera tricolor. jaalonso.github.io/exercitium/

Hacker News's avatar
Hacker News

@h4ckernews@mastodon.social

The State of Coherence in the Land of Type Classes

programming-journal.org/2025/1

Hacker News's avatar
Hacker News

@h4ckernews@mastodon.social

The State of Coherence in the Land of Type Classes

programming-journal.org/2025/1

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 11, 2025. jaalonso.github.io/vestigium/p

Rafael's avatar
Rafael

@ipxfong@mastodon.sdf.org

I think I love list comprehensions in Haskell.

Rafael's avatar
Rafael

@ipxfong@mastodon.sdf.org

I think I love list comprehensions in Haskell.

Rafael's avatar
Rafael

@ipxfong@mastodon.sdf.org

I think I love list comprehensions in Haskell.

Lobsters

@lobsters@mastodon.social

Making a multiplayer action game in Haskell lobste.rs/s/hoirtg
gitlab.com/-/snippets/4817016

Lobsters

@lobsters@mastodon.social

Making a multiplayer action game in Haskell lobste.rs/s/hoirtg
gitlab.com/-/snippets/4817016

jnpn's avatar
jnpn

@jnpn@mastodon.social

chrispenner.ca/posts/traversal

jnpn's avatar
jnpn

@jnpn@mastodon.social

chrispenner.ca/posts/traversal

The Haskell Foundation's avatar
The Haskell Foundation

@haskell_foundation@mastodon.social

Today the Haskell Foundation is migrating some of our server infrastructure and upgrading our storage. 💪

The Haskell Foundation's avatar
The Haskell Foundation

@haskell_foundation@mastodon.social

Today the Haskell Foundation is migrating some of our server infrastructure and upgrading our storage. 💪

Andres Löh's avatar
Andres Löh

@kosmikus@functional.cafe

Tomorrow, 2025-03-12, at 1930 UTC (note: one hour later than usual in Canada / US due to asynchronous DST shifts), there'll be a new episode of the , titled "understanding through a model". We'll talk about QuickCheck and convolutions ...

youtube.com/watch?v=0QTt2W7CVn

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Ordenación por el máximo. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making a multiplayer action game in Haskell

gitlab.com/-/snippets/4817016

Discussions: discu.eu/q/https://gitlab.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making a multiplayer action game in Haskell

gitlab.com/-/snippets/4817016

Discussions: discu.eu/q/https://gitlab.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making a multiplayer action game in Haskell

gitlab.com/-/snippets/4817016

Discussions: discu.eu/q/https://gitlab.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 10, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Your friendly neighborhood queer Haskell enthusiast is writing a compiler

twitch.tv/nicuveo

Discussions: discu.eu/q/https://www.twitch.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Stage Fright Peeled Away: Writing the 'peel' Function with Template Haskell

free.cofree.io/2025/03/10/temp

Discussions: discu.eu/q/https://free.cofree

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Get started with Bluefin

youtube.com/watch?v=2g5ZZRN2LZE

Discussions: discu.eu/q/https://www.youtube

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Iguales al siguiente. jaalonso.github.io/exercitium/

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

Just what the internet needed: another attempt to explain ! 🙄 But this time I'm comparing and approaches to show why make all the difference. Turns out those JavaScript Promise analogies only tell half the story…

https://hackers.pub/@hongminhee/2025/monads

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hackers.pub

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

Lobsters

@lobsters@mastodon.social

Hell (Haskell shell) via @hadronized lobste.rs/s/f6frhd
chrisdone.com/posts/hell-year-

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

Just what the internet needed: another attempt to explain ! 🙄 But this time I'm comparing and approaches to show why make all the difference. Turns out those JavaScript Promise analogies only tell half the story…

https://hackers.pub/@hongminhee/2025/monads

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hackers.pub

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

またまた世界にモナドの解説が増えてしまいました。😅 今回はHaskellとOCamlのアプローチを比較して、型クラスがどれだけ重要な違いを齎すかに就いて書いてみました。JavaScriptのPromiseと比べる譬えは半分しか真実を語っていないんですよね…

https://hackers.pub/@hongminhee/2025/monads

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hackers.pub

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

またまた世界にモナドの解説が増えてしまいました。😅 今回はHaskellとOCamlのアプローチを比較して、型クラスがどれだけ重要な違いを齎すかに就いて書いてみました。JavaScriptのPromiseと比べる譬えは半分しか真実を語っていないんですよね…

https://hackers.pub/@hongminhee/2025/monads

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hackers.pub

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

Just what the internet needed: another attempt to explain ! 🙄 But this time I'm comparing and approaches to show why make all the difference. Turns out those JavaScript Promise analogies only tell half the story…

https://hackers.pub/@hongminhee/2025/monads

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hackers.pub

While exploring functional programming languages, I've been reflecting on how different communities approach similar concepts. One pattern that seems particularly fascinating is how Haskell and OCaml communities differ in their embrace of monads as an abstraction tool.

The Elegant Power of Monads in Haskell

It's common to hear monads explained through analogies to concepts like JavaScript's Promise or jQuery chains. While these comparisons provide an entry point, they might miss what makes monads truly beautiful and powerful in Haskell's ecosystem.

The real strength appears to lie in the Monad typeclass itself. This elegant abstraction allows for creating generic functions and types that work with any type that shares the monad property. This seems to offer a profound unification of concepts that might initially appear unrelated:

  • You can write code once that works across many contexts (Maybe, [], IO, State, etc.)
  • Generic functions like sequence, mapM, and others become available across all monadic types
  • The same patterns and mental models apply consistently across different computational contexts

For example, a simple conditional function like this works beautifully in any monadic context:

whenM :: Monad m => m Bool -> m () -> m ()
whenM condition action = do
  result <- condition
  if result then action else return ()

Whether dealing with potentially missing values, asynchronous operations, or state transformations, the same function can be employed without modification. There's something genuinely satisfying about this level of abstraction and reuse.

OCaml's Different Approach

Interestingly, the OCaml community seems less enthusiastic about monads as a primary abstraction tool. This might stem from several factors related to language design:

Structural Differences

OCaml lacks built-in typeclass support, relying instead on its module system and functors. While powerful in its own right, this approach might not make monad abstractions feel as natural or convenient:

(* OCaml monad implementation requires more boilerplate *)
module type MONAD = sig
  type 'a t
  val return : 'a -> 'a t
  val bind : 'a t -> ('a -> 'b t) -> 'b t
end

module OptionMonad : MONAD with type 'a t = 'a option = struct
  type 'a t = 'a option
  let return x = Some x
  let bind m f = match m with
    | None -> None
    | Some x -> f x
end

OCaml also doesn't offer syntactic sugar like Haskell's do notation, which makes monadic code in Haskell considerably more readable and expressive:

-- Haskell's elegant do notation
userInfo = do
  name <- getLine
  age <- readLn
  return (name, age)

Compared to the more verbose OCaml equivalent:

let user_info =
  get_line >>= fun name ->
  read_ln >>= fun age ->
  return (name, age)

The readability difference becomes even more pronounced in more complex monadic operations.

Philosophical Differences

Beyond syntax, the languages differ in their fundamental approach to effects:

  • Haskell is purely functional, making monads essential for managing effects in a principled way
  • OCaml permits direct side effects, often making monadic abstractions optional

This allows OCaml programmers to write more direct code when appropriate:

(* Direct style in OCaml *)
let get_user_info () =
  print_string "Name: ";
  let name = read_line () in
  print_string "Age: ";
  let age = int_of_string (read_line ()) in
  (name, age)

OCaml's approach might favor pragmatism and directness in many cases, with programmers often preferring:

  • Direct use of option and result types
  • Module-level abstractions through functors
  • Continuation-passing style when needed

While this directness can be beneficial for immediate readability, it might come at the cost of some of the elegant uniformity that Haskell's monadic approach provides.

Reflections on Language Design

These differences highlight how programming language design shapes the idioms and patterns that emerge within their communities. Neither approach is objectively superior—they represent different philosophies about abstraction, explicitness, and the role of the type system.

Haskell's approach encourages a high level of abstraction and consistency across different computational contexts, which can feel particularly satisfying when working with complex, interconnected systems. There's something intellectually pleasing about solving a problem once and having that solution generalize across many contexts.

OCaml often favors more direct solutions that might be easier to reason about locally, though potentially at the cost of less uniformity across the codebase. This approach has its own virtues, particularly for systems where immediate comprehensibility is paramount.

After working with both paradigms, I find myself drawn to the consistent abstractions that Haskell's approach provides, while still appreciating the pragmatic clarity that OCaml can offer in certain situations. The typeclasses and syntactic support in Haskell seem to unlock a particularly elegant way of structuring code that, while perhaps requiring a steeper initial learning curve, offers a uniquely satisfying programming experience.

What patterns have you noticed in how different programming language communities approach similar problems? And have you found yourself drawn to the elegant abstractions of Haskell or the pragmatic approach of OCaml?

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 8, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Sum types and subtypes and unions. ~ Justin Le. blog.jle.im/entry/sum-types-an

Simon Michael's avatar
Simon Michael

@simonmic@fosstodon.org

hledger 1.42 is out, with new run and repl commands.
Thank you to contributors Dmitry Astapov, gesh, Thomas
Miedema, Joschua Kesper, and Lars Kellogg-Stedman !

- github.com/simonmichael/hledge
- hledger.org/relnotes.html#2025
- hledger.org/install

is free, robust, friendly, multicurrency, double-entry,
software for unix, mac, windows, and the web,
written in for reliability.

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

If I'm using "async" in Haskell to spawn a thread hackage.haskell.org/package/as and I want the thread to know about its own Async handle, which would be the best way of doing so?

It seems hat "fixIO" hackage.haskell.org/package/ba could do the trick, but I'm not sure if it would be a good idea 🤔

Example of where I used "fixIO" for that purpose: discourse.haskell.org/t/dynami

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

It's such a shame that the "official" generator for code doesn't generate proper union types. I mean, that's one of *the* defining features in Haskell.

Beady Belle Fanchannel's avatar
Beady Belle Fanchannel

@Profpatsch@mastodon.xyz

Let’s goooooo

Since GHC 9.6, any non-empty double quoted string can be used as a label. The restriction that the label must be a valid identifier has also been lifted.

Examples of newly allowed syntax:

    Leading capital letters: #Foo equivalant to getLabel @”Foo”

    Numeric characters: #3.14 equivalent to getLabel @”3.14”

    Arbitrary strings: #”Hello, World!” equivalent to getLabel @”Hello, World!”

Here is an example of the more permissive use of this extension, available since GHC 9.6:
ALT text detailsSince GHC 9.6, any non-empty double quoted string can be used as a label. The restriction that the label must be a valid identifier has also been lifted. Examples of newly allowed syntax: Leading capital letters: #Foo equivalant to getLabel @”Foo” Numeric characters: #3.14 equivalent to getLabel @”3.14” Arbitrary strings: #”Hello, World!” equivalent to getLabel @”Hello, World!” Here is an example of the more permissive use of this extension, available since GHC 9.6:

-- case-match on an e2 with a t2 that provides the relevant functions
caseE2 ::
  forall l1 t1 l2 t2 matcher r.
  ( HasField l1 matcher (t1 -> r),
    HasField l2 matcher (t2 -> r)
  ) =>
  matcher ->
  E2 l1 t1 l2 t2 ->
  r
{-# INLINE caseE2 #-}
caseE2 m e2 = do
  let f1 = getField @l1 m
  let f2 = getField @l2 m
  case e2 of
    E21 a -> f1 $ getField @l1 a
    E22 b -> f2 $ getField @l2 b

t2 :: forall l1 t1 l2 t2. LabelPrx l1 -> t1 -> LabelPrx l2 -> t2 -> T2 l1 t1 l2 t2
{-# INLINE t2 #-}
t2 LabelPrx a LabelPrx b = T2 (label @l1 a) (label @l2 b)

data LabelPrx (l :: Symbol) = LabelPrx

instance (l ~ l') => IsLabel l (LabelPrx l') where
  fromLabel = LabelPrx

instance (t ~ t') => IsLabel l (t -> (Label l t')) where
  fromLabel = label @l
ALT text details -- case-match on an e2 with a t2 that provides the relevant functions caseE2 :: forall l1 t1 l2 t2 matcher r. ( HasField l1 matcher (t1 -> r), HasField l2 matcher (t2 -> r) ) => matcher -> E2 l1 t1 l2 t2 -> r {-# INLINE caseE2 #-} caseE2 m e2 = do let f1 = getField @l1 m let f2 = getField @l2 m case e2 of E21 a -> f1 $ getField @l1 a E22 b -> f2 $ getField @l2 b t2 :: forall l1 t1 l2 t2. LabelPrx l1 -> t1 -> LabelPrx l2 -> t2 -> T2 l1 t1 l2 t2 {-# INLINE t2 #-} t2 LabelPrx a LabelPrx b = T2 (label @l1 a) (label @l2 b) data LabelPrx (l :: Symbol) = LabelPrx instance (l ~ l') => IsLabel l (LabelPrx l') where fromLabel = LabelPrx instance (t ~ t') => IsLabel l (t -> (Label l t')) where fromLabel = label @l
matcher :: T2 "oh yeah" (Int -> String) "mylabel" (a -> a)
matcher = t2 #"oh yeah" (\(i :: Int) -> show $ i + 1) #mylabel id

bar :: E2 "oh yeah" Int "mylabel" String
bar = E21 (#"oh yeah" 42)

baz :: String
baz = bar & caseE2 matcher
ALT text detailsmatcher :: T2 "oh yeah" (Int -> String) "mylabel" (a -> a) matcher = t2 #"oh yeah" (\(i :: Int) -> show $ i + 1) #mylabel id bar :: E2 "oh yeah" Int "mylabel" String bar = E21 (#"oh yeah" 42) baz :: String baz = bar & caseE2 matcher
Beady Belle Fanchannel's avatar
Beady Belle Fanchannel

@Profpatsch@mastodon.xyz

Let’s goooooo

Since GHC 9.6, any non-empty double quoted string can be used as a label. The restriction that the label must be a valid identifier has also been lifted.

Examples of newly allowed syntax:

    Leading capital letters: #Foo equivalant to getLabel @”Foo”

    Numeric characters: #3.14 equivalent to getLabel @”3.14”

    Arbitrary strings: #”Hello, World!” equivalent to getLabel @”Hello, World!”

Here is an example of the more permissive use of this extension, available since GHC 9.6:
ALT text detailsSince GHC 9.6, any non-empty double quoted string can be used as a label. The restriction that the label must be a valid identifier has also been lifted. Examples of newly allowed syntax: Leading capital letters: #Foo equivalant to getLabel @”Foo” Numeric characters: #3.14 equivalent to getLabel @”3.14” Arbitrary strings: #”Hello, World!” equivalent to getLabel @”Hello, World!” Here is an example of the more permissive use of this extension, available since GHC 9.6:

-- case-match on an e2 with a t2 that provides the relevant functions
caseE2 ::
  forall l1 t1 l2 t2 matcher r.
  ( HasField l1 matcher (t1 -> r),
    HasField l2 matcher (t2 -> r)
  ) =>
  matcher ->
  E2 l1 t1 l2 t2 ->
  r
{-# INLINE caseE2 #-}
caseE2 m e2 = do
  let f1 = getField @l1 m
  let f2 = getField @l2 m
  case e2 of
    E21 a -> f1 $ getField @l1 a
    E22 b -> f2 $ getField @l2 b

t2 :: forall l1 t1 l2 t2. LabelPrx l1 -> t1 -> LabelPrx l2 -> t2 -> T2 l1 t1 l2 t2
{-# INLINE t2 #-}
t2 LabelPrx a LabelPrx b = T2 (label @l1 a) (label @l2 b)

data LabelPrx (l :: Symbol) = LabelPrx

instance (l ~ l') => IsLabel l (LabelPrx l') where
  fromLabel = LabelPrx

instance (t ~ t') => IsLabel l (t -> (Label l t')) where
  fromLabel = label @l
ALT text details -- case-match on an e2 with a t2 that provides the relevant functions caseE2 :: forall l1 t1 l2 t2 matcher r. ( HasField l1 matcher (t1 -> r), HasField l2 matcher (t2 -> r) ) => matcher -> E2 l1 t1 l2 t2 -> r {-# INLINE caseE2 #-} caseE2 m e2 = do let f1 = getField @l1 m let f2 = getField @l2 m case e2 of E21 a -> f1 $ getField @l1 a E22 b -> f2 $ getField @l2 b t2 :: forall l1 t1 l2 t2. LabelPrx l1 -> t1 -> LabelPrx l2 -> t2 -> T2 l1 t1 l2 t2 {-# INLINE t2 #-} t2 LabelPrx a LabelPrx b = T2 (label @l1 a) (label @l2 b) data LabelPrx (l :: Symbol) = LabelPrx instance (l ~ l') => IsLabel l (LabelPrx l') where fromLabel = LabelPrx instance (t ~ t') => IsLabel l (t -> (Label l t')) where fromLabel = label @l
matcher :: T2 "oh yeah" (Int -> String) "mylabel" (a -> a)
matcher = t2 #"oh yeah" (\(i :: Int) -> show $ i + 1) #mylabel id

bar :: E2 "oh yeah" Int "mylabel" String
bar = E21 (#"oh yeah" 42)

baz :: String
baz = bar & caseE2 matcher
ALT text detailsmatcher :: T2 "oh yeah" (Int -> String) "mylabel" (a -> a) matcher = t2 #"oh yeah" (\(i :: Int) -> show $ i + 1) #mylabel id bar :: E2 "oh yeah" Int "mylabel" String bar = E21 (#"oh yeah" 42) baz :: String baz = bar & caseE2 matcher
Simon Michael's avatar
Simon Michael

@simonmic@fosstodon.org

hledger 1.42 is out, with new run and repl commands.
Thank you to contributors Dmitry Astapov, gesh, Thomas
Miedema, Joschua Kesper, and Lars Kellogg-Stedman !

- github.com/simonmichael/hledge
- hledger.org/relnotes.html#2025
- hledger.org/install

is free, robust, friendly, multicurrency, double-entry,
software for unix, mac, windows, and the web,
written in for reliability.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Aztecs v0.10: A modular game-engine and ECS for Haskell (now with a simpler design featuring applicative queries and monadic systems)

github.com/aztecs-hs/aztecs

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Sum Types, Subtypes, and Unions

blog.jle.im/entry/sum-types-an

Discussions: discu.eu/q/https://blog.jle.im

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

(Haskell in Haskell) 2. Lexing

cronokirby.com/posts/2020/12/h

Discussions: discu.eu/q/https://cronokirby.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Chat Bots Revisited

blog.cofree.coffee/2025-03-05-

Discussions: discu.eu/q/https://blog.cofree

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

"Learn Haskell by Example" book presentation by Philipp Hagenlocher

youtube.com/watch?v=dm84cqenhcU

Discussions: discu.eu/q/https://www.youtube

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Continuing introducing Я control flow primitives step by step. It's time for monoidal functors:

muratkasimov.art/Ya/Articles/C

Discussions: discu.eu/q/https://muratkasimo

Coding Gardener's avatar
Coding Gardener

@cdavies@mastodon.scot

I really need to master functions and functional programming generally. There's something about them that addles my brain. It's bothering me that I'm not good at them.
I can read through other people's functions and mostly work out what they do, but I struggle with writing my own.

I've read blogs that suggest learning or as they are pure functional languages, and it helps solidify the logic.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 3, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Writing a small practice parser for NetPBM images in Haskell

github.com/kostareg/netpbm

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 9/2025

discu.eu/weekly/haskell/2025/9/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

illuminant - ActivityPub server with NNTP interface

koldfront.dk/git/illuminant/tr

Discussions: discu.eu/q/https://koldfront.d

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Applying purity to the imperative world. ~ Jeremy Bowers. jerf.org/iri/post/2025/fp_less

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared March 1, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Release containers 0.8

github.com/haskell/containers/

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Functional pearl: How much is in a square? Calculating functional programs with squares. ~ Jose Nuno Oliveira. cambridge.org/core/services/ao

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 28, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

PPA: Un asistente de demostración para lógica de primer orden con extracción de testigos usando la traducción de Friedman. ~ Manuel Panichelli. gestion.dc.uba.ar/media/academ

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Static binary with Nix, problems with hmatrix

github.com/b4er/recalc/compare

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

haskell streaming libraries

jmtd.net/log/haskell_streaming/

Discussions: discu.eu/q/https://jmtd.net/lo

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Concurrent Order Book

github.com/bahbah94/Order-Book

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Dependent Haskell Roadmap

ghc.serokell.io/dh

Discussions: discu.eu/q/https://ghc.serokel

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Step-by-Step Guide to Installing GHC-JS (Haskell JavaScript FFI)

tushar-adhatrao.in/blogs/haske

Discussions: discu.eu/q/https://www.tushar-

Kyle Ackerman's avatar
Kyle Ackerman

@kack@mastodon.social

Trying to figure out what to use in my next personal project. Trying to stay away from touching JS. I have been considering becuase I like . I also have been considering and becuase I love . I guess I could choose any backend but I am really looking for a frontend replacement to make a QOL improvement

Andres Löh's avatar
Andres Löh

@kosmikus@functional.cafe

Please consider nominating yourself to be a member of the Foundation Board: discourse.haskell.org/t/2025-c

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 24, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 8/2025

discu.eu/weekly/haskell/2025/8/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org · Reply to HaskellOrg's post

Update n°42 from the GHC team at IOG

engineering.iog.io/2025-02-20-

Highlights:
• Sylvain worked on making GHC built with cabal-install pass the testsuite

• Luite looked into using cosmopolitan libc to see if we can make a GHC cross compiler that produces multi-arch/os binaries

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org · Reply to HaskellOrg's post

Update n°41 from the GHC team at IOG

engineering.iog.io/2025-01-30-

Highlights:
• Luite has completed the GHC 9.6.7 release.

• Sylvain worked on bootstrapping GHC and boot libraries with cabal-install

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The Haskell road to logic, math and programming. ~ Kees Doets, Jan van Eijck (2004). fldit-www.cs.tu-dortmund.de/~p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Bind and traverse with Kleisli morphisms. ~ Murat Kasimov. muratkasimov.art/Ya/Articles/B

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Multi Line Strings are now supported in GHC 9.12.1!

ghc.gitlab.haskell.org/ghc/doc

Discussions: discu.eu/q/https://ghc.gitlab.

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

In an alternative timeline where is the norm instead of Object-oriented programming, and is the most popular instead of , there is a list of tutorials trying to explain what Objects are to programmers in terms of FP concepts, the most popular of which is, “Objects are Comonads”.

However, we don't live in that timeline, so we'll have to be content with the inverse article, “Comonads are Objects” haskellforall.com/2013/02/you- .

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

In an alternative timeline where is the norm instead of Object-oriented programming, and is the most popular instead of , there is a list of tutorials trying to explain what Objects are to programmers in terms of FP concepts, the most popular of which is, “Objects are Comonads”.

However, we don't live in that timeline, so we'll have to be content with the inverse article, “Comonads are Objects” haskellforall.com/2013/02/you- .

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

This past week in the Security Advisories:

*checks notes*

Nothing. Business as usual it is then.

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

The GHC developers are very pleased to announce the availability of the second release candidate of GHC 9.6.7

Release notes: downloads.haskell.org/ghc/9.6.

Announcement: mail.haskell.org/pipermail/ghc

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Boost your Haskell productivity with Multiple Home Units in the repl

youtube.com/watch?v=B1WFMave-r4

Discussions: discu.eu/q/https://www.youtube

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

First Haskell Project (an implementation of Irving's algorithm to find roomates)

github.com/TheArjunAgarwal/mar

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 20, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Я ☞ Bind and traverse with Kleisli morphisms

muratkasimov.art/Ya/Articles/B

Discussions: discu.eu/q/https://muratkasimo

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Propositional function code from Haskell Road text

fldit-www.cs.tu-dortmund.de/~p

Discussions: discu.eu/q/https://fldit-www.c

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Lista cuadrada. jaalonso.github.io/exercitium/

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

I must say, with the exception of macros, most of is easily understandable when you know and some . I'm flying through this.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 19, 2025. jaalonso.github.io/vestigium/p

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

"Monad of No Return: Next Steps" discourse.haskell.org/t/monad-

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GitHub - VitalBio/dash-haskell-flake

github.com/VitalBio/dash-haske

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Bellroy Technology Team: 2024 in Review

exploring-better-ways.bellroy.

Discussions: discu.eu/q/https://exploring-b

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Máximos locales. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 18, 2025. jaalonso.github.io/vestigium/p

Clemens Schmid's avatar
Clemens Schmid

@ClemensSchmid@archaeo.social

currycarbon v0.4.0.0 is finally available. This version comes with a number of visible and invisible changes, most obviously an extension of the neat command line plot. This version is again available for MS Windows.

github.com/nevrome/currycarbon

Screenshot of currycarbon command line output
ALT text detailsScreenshot of currycarbon command line output
Clemens Schmid's avatar
Clemens Schmid

@ClemensSchmid@archaeo.social

currycarbon v0.4.0.0 is finally available. This version comes with a number of visible and invisible changes, most obviously an extension of the neat command line plot. This version is again available for MS Windows.

github.com/nevrome/currycarbon

Screenshot of currycarbon command line output
ALT text detailsScreenshot of currycarbon command line output
Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Announcing Symbolize 1.0.1.0: String Interning / Global Symbol Table, with Garbage Collection

discourse.haskell.org/t/symbol

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Matrices de Toepliz. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell coach to stick with women's team for basketball playoffs despite having been fired

www2.ljworld.com/news/general-

Discussions: discu.eu/q/https://www2.ljworl

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 17, 2025. jaalonso.github.io/vestigium/p

Bhavani Shankar's avatar
Bhavani Shankar

@bshankar@mastodon.online · Reply to James Gayfer's post

@jgayfer It also depends on your personality.

I have seen careful and pedantic coders build impressive things with python and js while I tend to make a mess that's impossible to maintain. I also waste many hours debugging.

So for me, a strictly typed language leads to long term productivity. I also take on bigger problems with confidence.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell Interlude 62: Conal Elliott

haskell.foundation/podcast/62/

Discussions: discu.eu/q/http://haskell.foun

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Natural transformations as a basis of control. ~ Murat Kasimov. muratkasimov.art/Ya/Articles/N

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 16, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The relationship between category theory, lambda calculus, and functional programming in Haskell. ~ Antonio Montano. 4m4.it/posts/category-theory-f

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

PatternMatchable, Yoneda Embedding, and Adjunction - Show and Tell

discourse.haskell.org/t/patter

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 14, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Minimalistic niche tech job board

beyond-tabs.com/

Discussions: discu.eu/q/http://beyond-tabs.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Primos equidistantes. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The Haskell Unfolder Episode 39: Deriving strategies). ~ Edsko de Vries, Andres Löh. youtube.com/live/NEUbp2CsuNg

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

I should learn and use . I could use it for work projects, and it would fit neatly, with being safe, fast, and easily installable/deployable.

But it somehow doesn't "tickle" me. I keep coming back to these (comparatively) more exotic languages like . Not sure why, but I think it offers more learning experiences, possibly more rigidity?

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Deploying a Single-Binary Haskell Web App

entropicthoughts.com/deploying

Discussions: discu.eu/q/https://entropictho

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

The Haskell Unfolder Episode 39: deriving strategies

youtube.com/watch?index=39&lis

Discussions: discu.eu/q/https://www.youtube

Robin Palotai's avatar
Robin Palotai

@robinp@mastodon.social · Reply to Abhinav 🌏's post

@abnv could do it with , but of the libraries that sound promising
- 1 has a concise API but is experimental and misses tests
- 1 depends on an ancient base
- 1 has a too conservative licence
- 1 where you need to pass contraprovariant subfunctors and then project the result to 1.5D-space
- 1 uses a logging framework monad dep that is not compatible with your stack
- 1 is practical, but has bug that is fixed locally by users who were too busy to publish them
- 1 you need to jailbreak nix

redmp (EDITED)'s avatar
redmp (EDITED)

@redmp@recurse.social

@jmct challenge accepted

(baton roue image macro)

* man riding bike: "efficient pure functional programming"
* man puts stick between spokes: "lazy evaluation"
* man on ground holding knee: "BangPatterns StrictData Strict MagicHash UnboxedTuples UnliftedNewtypes UnboxedSums UnliftedDatatypes"

The haskell logo is pasted over the man's face in all frames.
ALT text details(baton roue image macro) * man riding bike: "efficient pure functional programming" * man puts stick between spokes: "lazy evaluation" * man on ground holding knee: "BangPatterns StrictData Strict MagicHash UnboxedTuples UnliftedNewtypes UnboxedSums UnliftedDatatypes" The haskell logo is pasted over the man's face in all frames.
Robin Palotai's avatar
Robin Palotai

@robinp@mastodon.social · Reply to Abhinav 🌏's post

@abnv could do it with , but of the libraries that sound promising
- 1 has a concise API but is experimental and misses tests
- 1 depends on an ancient base
- 1 has a too conservative licence
- 1 where you need to pass contraprovariant subfunctors and then project the result to 1.5D-space
- 1 uses a logging framework monad dep that is not compatible with your stack
- 1 is practical, but has bug that is fixed locally by users who were too busy to publish them
- 1 you need to jailbreak nix

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

: There is more than one way to do it.
: There should be one obvious way to do it.
: There is no straightforward way to do it.
: There is no way to do it.

Andres Löh's avatar
Andres Löh

@kosmikus@functional.cafe

Tomorrow, 2025-02-11, we'll live-stream a new episode of the . Edsko and I will discuss the various strategies for deriving instances that GHC offers and their relative strengths and weaknesses. Hope to see you all there! youtube.com/watch?v=NEUbp2CsuN

Fraser Tweedale's avatar
Fraser Tweedale

@hackuador@functional.cafe

Talk change for tonight. The explicit substitutions talk will be rescheduled. In its place, parser combinators in (live-coding a JSON parser from scratch).

Be there or be a lambda cube. lu.ma/85i70qns

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Anagramas. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 6/2025

discu.eu/weekly/haskell/2025/6/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Я ☞ Natural transformations as a basis of control flow

muratkasimov.art/Ya/Articles/N

Discussions: discu.eu/q/https://muratkasimo

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Turner, Bird, Eratosthenes: An eternal burning thread. ~ Jeremy Gibbons. cambridge.org/core/journals/jo

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

2025 Call for nominations for the Haskell Foundation

gitlab.haskell.org/hf/meta/-/b

Discussions: discu.eu/q/https://gitlab.hask

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 8, 2025. jaalonso.github.io/vestigium/p

Jons Mostovojs's avatar
Jons Mostovojs

@jonn@social.doma.dev · Reply to Play Ball!!! cafechatnoir's post

@cafechatnoir "afternoon workshop type class" – accidental

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Introducing Haskell Run – A VS Code Extension to Execute Haskell Instantly!

marketplace.visualstudio.com/i

Discussions: discu.eu/q/https://marketplace

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

Turner, Bird, Eratosthenes: An eternal burning thread cambridge.org/core/journals/jo

HN news.ycombinator.com/item?id=4

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Review of "Haskell in depth" by Vitaly Bragilevsky. ~ Brent Yorgey. cambridge.org/core/services/ao

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Tricking Haskell into state: how Clash's Signal type works

clash-lang.org/blog/0007-signa

Discussions: discu.eu/q/https://clash-lang.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 6, 2025. jaalonso.github.io/vestigium/p

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

tweag.io/blog/2025-02-06-refac

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Diagonales principales. jaalonso.github.io/exercitium/

NoCanDo's avatar
NoCanDo

@escape_velocity@functional.cafe

I fucking hate cabal for the inexcusable design decision that all info for a project must be in the cabal file and therefore cabal cannot figure out what modules are part of the project folder structure. Why? Because this means I can’t get extension support for files until I explicitly add the bloody module to the cabal file. When asked about it on the Haskell discord I am told that this is an unfortunate consequence of the above and that it’s on me to use some ugly workaround.

For such a fundamental pain in the UX, the only acceptable response from devs should be to stuff their pride deep deep down and go back to the fucking drawing board and throw out such hideous design decisions.

Philippa Cowderoy's avatar
Philippa Cowderoy

@flippac@types.pl · Reply to julesh's post

@julesh I spent a lot of time in freenode pointing out that no, haskell could go fuck itself re various limitations because the suggestions I was being given were either workaround grade (which, tbf, was usually acknowledged) or attempts to tell me I had an XY problem and Y wasn't "you're using haskell"

Some of them have, at least, improved significantly - but there's also a reason I'm deliberately keeping Nooblog and its successors small enough to piss people off, which is that I absolutely should not be maintaining a language others are building on top of! Cribbing off my design is more than fine by me.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 4, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Type-level interfaces in Haskell and Rust (talk, Functional Conf 2025)

youtu.be/vKAuSD0RnmY?si=JG4gHk

Discussions: discu.eu/q/https://youtu.be/vK

redmp (EDITED)'s avatar
redmp (EDITED)

@redmp@recurse.social

this is the best unintentional critique of "make illegal states unrepresentable" I've seen lobste.rs/s/wucizv/no_panic_ru tl;dr "shit happens"

pandoc's avatar
pandoc

@pandoc@fosstodon.org

Evan Silberman wrote an interesting post that describes the process which led to the contribution of the mdoc reader.
duckrabbit.tech/articles/mdoc.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Posiciones de las diagonales principales. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared February 3, 2025. jaalonso.github.io/vestigium/p

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

Check out my series of posts about writing a fast solver in , starting with this post: abhinavsarkar.net/posts/fast-s

Comments, boosts and likes appreciated.

a completed Sudoku puzzle
ALT text detailsa completed Sudoku puzzle
Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Bluefin versus OOP

h2.jaguarpaw.co.uk/posts/bluef

Discussions: discu.eu/q/https://h2.jaguarpa

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: La bandera tricolor. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

my first Haskell project - a random art generator

github.com/jamesma100/randomart

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Midlands Graduate School 2025

andreipopescu.uk/MGS_Sheffield

Discussions: discu.eu/q/https://www.andreip

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

Registrations for are open!

fosstodon.org/@zurihac/1139237

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Myth and truth in Haskell asynchronous exceptions

kazu-yamamoto.hatenablog.jp/en

Discussions: discu.eu/q/https://kazu-yamamo

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 31, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[Well-Typed] An introduction to Cabal Hooks for package authors

well-typed.com/blog/2025/01/ca

Discussions: discu.eu/q/https://www.well-ty

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Add safe integral conversions to base · Issue #314 · haskell/core-libraries-committee

github.com/haskell/core-librar

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Using the Tardis Monad in a compiler optimisation pass.

icicle-lang.github.io/posts/20

Discussions: discu.eu/q/https://icicle-lang

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Ordenación por el máximo. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Hell (Haskell shell)

chrisdone.com/posts/hell-year-

Discussions: discu.eu/q/https://chrisdone.c

Lobsters

@lobsters@mastodon.social

Hell (Haskell shell) via @hadronized lobste.rs/s/f6frhd
chrisdone.com/posts/hell-year-

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Blazing-Fast Directory Tree Traversal: Haskell Streamly Beats Rust

youtube.com/watch?v=voy1iT2E4bk

Discussions: discu.eu/q/https://www.youtube

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

Check out my series of posts about writing a fast solver in , starting with this post: abhinavsarkar.net/posts/fast-s

Comments, boosts and likes appreciated.

a completed Sudoku puzzle
ALT text detailsa completed Sudoku puzzle
Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 4/2025

discu.eu/weekly/haskell/2025/4/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Advent of Code in Haskell: Reflections and write-ups for all 25 days of 2024

blog.jle.im/entry/advent-of-co

Discussions: discu.eu/q/https://blog.jle.im

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Failed to install HLS

haskell.org/ghcup/sh/bootstrap

Discussions: discu.eu/q/https://www.haskell

Jack Leightcap's avatar
Jack Leightcap

@jleigh@recurse.social

Hey all! I'm due for an (re-)introduction: I'm Jack, an engineer in the NYC area from a firmware & cybersecurity background, currently working in something like hardware-software co-design.

Technical work is often with , and in all-too-rare moments stuff like and

I've never been much for social media, usually preferring to keep interests local: a better-detailed to follow as I figure this out 🙂

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 25, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Use Monoids for Construction

reasonablypolymorphic.com/blog

Discussions: discu.eu/q/https://reasonablyp

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Use monoids for construction. ~ Sandy Maguire. reasonablypolymorphic.com/blog

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 24, 2025. jaalonso.github.io/vestigium/p

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

's "monoidmap" is fantastic! Getting a histogram from a list is just "foldMap (`MonoidMap.singleton` mempty)" (very implicit, using the "Sum" monoid)

Marc's avatar
Marc

@corpsmoderne@mamot.fr · Reply to Haskell Weekly's post

@haskell_discussions I could predict that the comments would be full of "ThIs Is NoT tHe ReAl QuIcKsOrT!!!" XD

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Quicksort [Computerphile]

youtu.be/OKc2hAmMOY4

Discussions: discu.eu/q/https://youtu.be/OK

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

New SHA256 bindings supporting HMAC key reuse

hackage.haskell.org/package/sh

Discussions: discu.eu/q/https://hackage.has

Jencel Panic's avatar
Jencel Panic

@abuseofnotation@mathstodon.xyz

At the headquaters:

"OK, guys, so our user pool consists only of folks who already know and Is there a way to narrow it down more?"

"I got it, what if we allow unicode, so they also have to also know ?"

"Brilliant!"

(just kidding, agda is very cool (hope to learn it someday))

Jencel Panic's avatar
Jencel Panic

@abuseofnotation@mathstodon.xyz

At the headquaters:

"OK, guys, so our user pool consists only of folks who already know and Is there a way to narrow it down more?"

"I got it, what if we allow unicode, so they also have to also know ?"

"Brilliant!"

(just kidding, agda is very cool (hope to learn it someday))

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Tracing foreign function invocations. ~ Edsko de Vries, Zubin Duggal, Matthew Pickering. well-typed.com/blog/2025/01/tr

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Supercede’s house style for Haskell. ~ Jezen Thomas. jezenthomas.com/2025/01/style-

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Modeling dataframes in Haskell using higher-kinded types. ~ Laurent P. René de Cotret. laurentrdc.xyz/posts/HKTGeneri

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Making my life easier with two GADTs. ~ borar. systema10.org/posts/making-my-

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Making my life harder with GADTs. Matt Parsons. parsonsmatt.org/2025/01/21/mak

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Making my life easier with GADTs. ~ Lucas Escot. acatalepsie.fr/posts/making-my

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Fast Haskell, Redux. ~ Jared Tobin. jtobin.io/fast-haskell-redux

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

A new perspective on lenses. ~ Sandy Maguire. reasonablypolymorphic.com/blog

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Hyperbole: Haskell interactive serverside web framework inspired by Htmx, Elm

github.com/seanhess/hyperbole

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Cabal cannot build scotty project on Windows because of zlib

hackage.haskell.org/package/sc

Discussions: discu.eu/q/https://hackage.has

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 22, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell Interlude 61: Sam Lindley

haskell.foundation/podcast/61/

Discussions: discu.eu/q/https://haskell.fou

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

A Proper x86 Assembler in Haskell Using the Escardó-Oliva Functional

blog.vmchale.com/article/escar

Discussions: discu.eu/q/http://blog.vmchale

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Update: Jaxpr / Jax interop Haskell Library (named Neptune)

github.com/mzguntalan/neptune

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making my life easier with two GADTs

systema10.org/posts/making-my-

Discussions: discu.eu/q/http://systema10.or

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Iguales al siguiente. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Advent of Code 2024: Haskell solution reflections for all 25 days. ~ Justin Le. blog.jle.im/entry/advent-of-co

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making My Life Harder with GADTs

parsonsmatt.org/2025/01/21/mak

Discussions: discu.eu/q/https://www.parsons

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Making my life easier with GADTs

acatalepsie.fr/posts/making-my

Discussions: discu.eu/q/https://acatalepsie

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GHC String Interpolation Survey Open!

discourse.haskell.org/t/ghc-st

Discussions: discu.eu/q/https://discourse.h

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Documentation on using Renovate with haskell-actions

github.com/haskell-actions/set

Discussions: discu.eu/q/https://github.com/

WimⓂ️'s avatar
WimⓂ️

@wim_v12e@merveilles.town

Minor annoyance of the day is this warning:

"warning: [GHC-63394] [-Wx-partial]
In the use of ‘head’
(imported from Prelude, but defined in GHC.List):
"This is a partial function, it throws an error on empty lists. Use pattern matching or Data.List.uncons instead. Consider refactoring to use Data.List.NonEmpty."

I don't want this is on by default. If I want to call `head` on a list it is my problem that this might fail.

Luckily, the fix is easy:

{-# OPTIONS_GHC -Wno-x-partial #-}

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 20, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

SupGen is program synthesizer that outperforms SOTA alternatives using the HVM (which is now in Haskell!)

youtube.com/watch?v=GddkKIhDE2c

Discussions: discu.eu/q/https://www.youtube

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 3/2025

discu.eu/weekly/haskell/2025/3/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Primos consecutivos con media capicúa. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Interpreting Brainfuck in Haskell. ~ Abhinav Sarkar. abhinavsarkar.net/posts/brainf

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Hasochism: The pleasure and pain of dependently typed Haskell programming. ~ Sam Lindley, Conor McBride. personal.cis.strath.ac.uk/cono

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Hasochism: The Pleasure and Pain of Dependently Typed Haskell Programming

personal.cis.strath.ac.uk/cono

Discussions: discu.eu/q/https://personal.ci

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 19, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Interpreting Brainfuck in Haskell

abhinavsarkar.net/posts/brainf

Discussions: discu.eu/q/https://abhinavsark

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Porting PFP from Haskell to OCaml

github.com/lewis-carson/PFPCaml

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

A new perspective on lenses. ~ Sandy Maguire. reasonablypolymorphic.com/blog

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell: A Great Procedural Language

entropicthoughts.com/haskell-p

Discussions: discu.eu/q/https://entropictho

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 18, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Mastermind. jaalonso.github.io/exercitium/

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

and PSA to save you some time: if you're evaluating which library to pick among a dozen, just choose the one that isn't broken in . You're welcome.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Listopia: List manipulation library inspired by Haskell package Data.List. ~ Ito Dimercel. github.com/Dimercel/listopia

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Call for Nominations: Haskell.org Committee

haskell.org/haskell-org-commit

Discussions: discu.eu/q/https://www.haskell

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 17, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Determinación de los elementos minimales. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Research software engineer at Epic. tinyurl.com/23jucqu4

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 16, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Fast Haskell, Redux

jtobin.io/fast-haskell-redux

Discussions: discu.eu/q/https://jtobin.io/f

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Now added initial support for Haskell - auto-generate Haskell data models from Scala case classes - early preview, will extend further in hackathon

codeberg.org/jjba23/dmtscala

Discussions: discu.eu/q/https://codeberg.or

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Suma de los números amigos menores que n. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Sucesión de números amigos. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

The Haskell Unfolder Episode 38: tasting and testing CUDA (map, fold, scan). ~ Edsko de Vries, Andres Löh. youtube.com/live/ww4C3jlsesw?s

Lira :progresspride_i_flag:'s avatar
Lira :progresspride_i_flag:

@LiraK@tech.lgbt

:boosts_ok_gay: lira.kraamwinkel.be/articles/h

A while ago I wrote about the Foreign Function Interface in Haskell and how to make a desktop application with Qt6.

The following topics are covered:

  • Using foreign import to call C or C++-functions (without name mangling);
  • Using foreign export to call Haskell-functions in C or C++
  • How to create pointers that get freed automatically to prevent memory issues;
  • How to create arrays in Haskell;
  • How to create structs in Haskell (manually and via GStorable);
  • How to create function pointers in Haskell;
  • Why MonadReader (IORef [a]) m is better for storing pointers than MonadState [a] m;
  • The difference between ccall and capi

I already shared it on my previous account back then, but I am posting it here now too :)

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

An agda2hs-compatible representation of exact real arithmetic. ~ Viktor Csimma. csimmaviktor.web.elte.hu/acorn

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 15, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

The Haskell Unfolder Episode 38: tasting and testing CUDA (map, fold, scan)

youtube.com/watch?index=38&lis

Discussions: discu.eu/q/https://www.youtube

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Research Software Engineer at Epic

discourse.haskell.org/t/resear

Discussions: discu.eu/q/https://discourse.h

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

Hit the translate button and read about some interesting-looking libraries.
zenn.dev/konn/articles/2025-01

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Sucesión de números amigos. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 14, 2025. jaalonso.github.io/vestigium/p

Lira :progresspride_i_flag:'s avatar
Lira :progresspride_i_flag:

@LiraK@tech.lgbt

:boosts_ok_gay: lira.kraamwinkel.be/articles/h

A while ago I wrote about the Foreign Function Interface in Haskell and how to make a desktop application with Qt6.

The following topics are covered:

  • Using foreign import to call C or C++-functions (without name mangling);
  • Using foreign export to call Haskell-functions in C or C++
  • How to create pointers that get freed automatically to prevent memory issues;
  • How to create arrays in Haskell;
  • How to create structs in Haskell (manually and via GStorable);
  • How to create function pointers in Haskell;
  • Why MonadReader (IORef [a]) m is better for storing pointers than MonadState [a] m;
  • The difference between ccall and capi

I already shared it on my previous account back then, but I am posting it here now too :)

Andres Löh's avatar
Andres Löh

@kosmikus@functional.cafe

The is back! In tomorrow's episode, we'll take a look at CUDA and write some simple functions in it. We'll also show how to interface from Haskell to CUDA and how to use QuickCheck to test CUDA functions from Haskell.

youtube.com/watch?v=ww4C3jlses

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Hell (Haskell shell): Year in review. ~ Chris Done. chrisdone.com/posts/hell-year-

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Equality on recursive λ-terms

gist.github.com/VictorTaelin/1

Discussions: discu.eu/q/https://gist.github

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 2/2025

discu.eu/weekly/haskell/2025/2/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

하스켈 공부를 시작하고, 펑터를 슬슬 쓰기 시작하면서, Applicative 로 넘어갈 무렵에 볼만한 글입니다. 컨텍스트란 말이 편해지면, 펑터 다음 진도에 도움이 많이 됩니다.

최근 펑터를 공부하면서, 펑터가 달리 보여 5년전 글의 컨텍스트, Applicative, Traversable 내용을 보강해 봤습니다.

lionhairdino.github.io/posts/2

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 11, 2025. jaalonso.github.io/vestigium/p

Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

예전 펑터 글에 "펑터 값을 프리미티브한 값처럼 쓰고 싶다"라는 목표를 먼저 세우고, `<$>`와 `<*>`등을 살펴보는 내용을 추가했습니다.
lionhairdino.github.io/posts/2

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

Trying to learn persistent/esqueleto

yesodweb.com/book/persistent

hackage.haskell.org/package/pe
persistent-postgresql hackage.haskell.org/package/pe
the Persistent entity syntax hackage.haskell.org/package/pe
esqueleto hackage.haskell.org/package/es

Screen capture from the Yesod book.

However, there is one issue that newcomers are often bothered by: why are IDs and values completely separate? It seems like it would be very logical to embed the ID inside the value. In other words, instead of having:

data Person = Person { name :: String }
have

data Person = Person { personId :: PersonId, name :: String }

Well, there’s one problem with this right off the bat: how do we do an insert? If a Person needs to have an ID, and we get the ID by inserting, and an insert needs a Person, we have an impossible loop. We could solve this with undefined, but that’s just asking for trouble.
ALT text detailsScreen capture from the Yesod book. However, there is one issue that newcomers are often bothered by: why are IDs and values completely separate? It seems like it would be very logical to embed the ID inside the value. In other words, instead of having: data Person = Person { name :: String } have data Person = Person { personId :: PersonId, name :: String } Well, there’s one problem with this right off the bat: how do we do an insert? If a Person needs to have an ID, and we get the ID by inserting, and an insert needs a Person, we have an impossible loop. We could solve this with undefined, but that’s just asking for trouble.
"One last trick you can do with attributes is to specify the names to be used for the SQL tables and columns. This can be convenient when interacting with existing databases."
ALT text details"One last trick you can do with attributes is to specify the names to be used for the SQL tables and columns. This can be convenient when interacting with existing databases."
Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

예전 펑터 글에 "펑터 값을 프리미티브한 값처럼 쓰고 싶다"라는 목표를 먼저 세우고, `<$>`와 `<*>`등을 살펴보는 내용을 추가했습니다.
lionhairdino.github.io/posts/2

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Números amigos. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Alpha beta pruning with the selection monad. ~ Johannes Hartmann, Jeremy Gibbons. trendsfp.github.io/abstracts/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Shallowly embedded functions. ~ Mart Lubbers, Pieter Koopman, Niek Janssen. trendsfp.github.io/abstracts/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Using GHC core to normalise student programs. ~ Matilda Blomqvist, Alex Gerdes. trendsfp.github.io/abstracts/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

On the correctness of Barron and Strachey’s cartesian product function. ~ Wouter Swierstra, Jason Hemann. trendsfp.github.io/abstracts/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Categories and Haskell (An introduction to the mathematics behind modern functional programming). ~ Jan-Willem Buurlage. raw.githubusercontent.com/jwbu

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 10, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Máxima suma de caminos en un triángulo. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] Yolc - a Haskell-powered, safe, expressive, fun language for Ethereum

discourse.haskell.org/t/ann-yo

Discussions: discu.eu/q/https://discourse.h

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Unable to build botan

github.com/haskell-cryptograph

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 9, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Case Study — Using a JavaScript component inside a Haskell application

blog.haskell.org/case-study-fo

Discussions: discu.eu/q/https://blog.haskel

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org · Reply to HaskellOrg's post

Update n°40 from the GHC team at IOG

engineering.iog.io/2025-01-09-

Highlights:
• Luite finalized the patch adding compiler flags to to switch off speculative evaluation.

• Sylvain worked on bootstrapping GHC with Cabal.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Using a JavaScript component inside a Haskell application. ~ Mateusz Goślinowski. blog.haskell.org/case-study-fo

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

New post on the blog: “Case Study — Using a JavaScript component inside a Haskell application”

blog.haskell.org/case-study-fo

Jons Mostovojs's avatar
Jons Mostovojs

@jonn@social.doma.dev · Reply to Jons Mostovojs's post

@tolmasky if I had to implement reflection in Lean4 or Agda, I would try to mimic 's typeable.

But also, I think there must be a very important point here! In dependently typed languages, entities can have more than one type!

(frac 1 2) : Frac 2 4, but also (frac 1 2) : Frac 4 8, for instance.

[1] : ListLE 1, but also [1]: ListLE 42.

So, perhaps the whole idea of general reflaction is defeated by this property. And this is why offers superior reflection[1]. Note that is in itself!

I don't know if I'm mansplaining here or if you're aware of haskell's Typeable, but here is a simple demo of its capabilities: github.com/cognivore/typeable-

In , I would emulate it by defining asking the user to provide explict instances over an enum, just as you wrote! The existential quantification trick can be done in by carrying the instance inside a structure that ties the knot between the type and an entity which has this type:

```
structure Stuff where
α : Type
val : α
inst : Reflect α
```

You won't be able to construct it unless α is Reflect.

* * *

[1]: hackage.haskell.org/package/ba

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GHC 9.12 & Cabal 3.14 releases

blog.haskell.org/ghc-9-12-caba

Discussions: discu.eu/q/https://blog.haskel

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 1/2025

discu.eu/weekly/haskell/2025/1/

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 4, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

McHale (2024) Streaming Compression via Laziness

vmchale.com/static/serve/lazy-

Discussions: discu.eu/q/http://vmchale.com/

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

GHC 9.12 & Cabal 3.14 released!

Read the announcement at blog.haskell.org/ghc-9-12-caba

GHC 9.12 & Cabal 3.14
ALT text detailsGHC 9.12 & Cabal 3.14
Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

In my quest of solving problems in interesting ways, this time I solved the 2020 problem "Seating System" with comonads and stencils in . Read my latest post about it: abhinavsarkar.net/posts/solvin

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Solving Advent of Code “Seating System” with Comonads and Stencils

abhinavsarkar.net/posts/solvin

Discussions: discu.eu/q/https://abhinavsark

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Policy regarding taking over Hackage packages

discourse.haskell.org/t/policy

Discussions: discu.eu/q/https://discourse.h

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

In my quest of solving problems in interesting ways, this time I solved the 2020 problem "Seating System" with comonads and stencils in . Read my latest post about it: abhinavsarkar.net/posts/solvin

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

In my quest of solving problems in interesting ways, this time I solved the 2020 problem "Seating System" with comonads and stencils in . Read my latest post about it: abhinavsarkar.net/posts/solvin

Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

a는 Identity a라고 본다면, 세상의 모든 값을 펑터 값으로 생각할 수 있습니다. 항상 함수를 적용할 때는 f <$> a라 쓸 수 있습니다. 간단한 프리미티브 값이든, 복잡한 계산 후 받는 값이든 모두 같은 것으로 취급할 수 있습니다.

FRP에서 Event, Behavior를 일반 값처럼 쓰기 위해, 특별한 테크닉이 필요하지 않습니다. 원래 펑터가 그런 것입니다.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Caminos en un triángulo. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 3, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Mayor órbita de la sucesión de Collatz. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Parallel SAT solver. ~ Yixuan Li, Jiaqian Li, Phoebe Wang. cs.columbia.edu/~sedwards/clas

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Parallel QuickHull algorithm in Haskell. ~ George Morgulis, Henry Lin. cs.columbia.edu/~sedwards/clas

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Modular probabilistic programming with algebraic effects. ~ Oliver Goldstein, Ohad Kammar. arxiv.org/abs/2412.19826

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 2, 2025. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Ternas pitagóricas con suma dada. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared January 1, 2025. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[Design] Dataframes in Haskell

discourse.haskell.org/t/design

Discussions: discu.eu/q/https://discourse.h

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[ANN] GHCup 0.1.40.0 released

discourse.haskell.org/t/ann-gh

Discussions: discu.eu/q/https://discourse.h

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Aztecs: A type-safe and friendly ECS for Haskell

github.com/matthunz/aztecs

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Suma de múltiplos de 3 o de 5. jaalonso.github.io/exercitium/

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

Just in time, my special for December 2024: notes.abhinavsarkar.net/2024/l.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

erebe/greenclip: Simple clipboard manager to be integrated with rofi

github.com/erebe/greenclip

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Exported for tests only: Precise control over API visibility with custom warnings

tech.scrive.com/exported-for-t

Discussions: discu.eu/q/https://tech.scrive

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

Just in time, my special for December 2024: notes.abhinavsarkar.net/2024/l.

MangoIV's avatar
MangoIV

@mangoiv@functional.cafe

hackage now has syntax highlighting 🥹
See e.g.
hackage.haskell.org/package/ht

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 30, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 52/2024

discu.eu/weekly/haskell/2024/5

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Overloading the lambda abstraction in Haskell

acatalepsie.fr/posts/overloadi

Discussions: discu.eu/q/https://acatalepsie

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Overloading the lambda abstraction in Haskell

acatalepsie.fr/posts/overloadi

Discussions: discu.eu/q/https://acatalepsie

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Generalized Dijkstra in Haskell. ~ Lucas Escot. acatalepsie.fr/posts/haskell-d

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 29, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Category Theory Illustrated

abuseofnotation.github.io/cate

Discussions: discu.eu/q/https://abuseofnota

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Exponente en la factorización. jaalonso.github.io/exercitium/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Excellent Haskell course!

youtube.com/@haskellhutt

Discussions: discu.eu/q/https://www.youtube

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 26, 2024. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Reconocimiento de potencias de 4. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 25, 2024. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 24, 2024. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: El teorema de Navidad de Fermat. glc.us.es/~jalonso/exercitium/

Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

크리스마스에는 모나드 를 봅시다.
lionhairdino.github.io/posts/2

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Show HN: I Ported GHC Haskell Compiler to Windows 11 ARM. MC Gift

gitlab.haskell.org/ghc/ghc/-/i

Discussions: discu.eu/q/https://gitlab.hask

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Producto de los elementos de la diagonal principal. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Compiling dependent type preconditions to runtime checks with Agda2Hs. ~ Jakob Naucke. repository.tudelft.nl/file/Fil

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

How to collect performance statistics with Cabal

blog.haskell.org/how-to-collec

Discussions: discu.eu/q/https://blog.haskel

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 51/2024

discu.eu/weekly/haskell/2024/5

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

The Cabal Manual now has a guide on how to collect performance statistics of Haskell applications. Read more at
blog.haskell.org/how-to-collec

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

Interlude's guest Tom Ellis works at Groq, using Haskell to compile AI models to specialized hardware. Listen to this episode about stability of both GHC and Haskell libraries, effects, and strictness.

haskell.foundation/podcast/60/

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org · Reply to HaskellOrg's post

Update n°39 from the GHC team at IOG

engineering.iog.io/2024-12-19-

Highlights:
• Sylvain kept working on building GHC with cabal-install instead of Hadrian

• Jeff: created a GHC JS Backend matrix room

• Luite Is back from vacation and has been preparing the GHC 9.6.7 release. Welcome back Luite!

HaskellOrg's avatar
HaskellOrg

@haskell@fosstodon.org

Update n°38 from the GHC team at IOG

engineering.iog.io/2024-11-28-

Highlights:
• Sylvain explored how to build GHC with cabal instead of hadrian
• Jeff investigated variations in the Plutus benchmark suite, possibly related to garbage collection
• Luite worked on preparing the upcoming GHC 9.6.7

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell Interlude 60: Tom Ellis

haskell.foundation/podcast/60/

Discussions: discu.eu/q/https://haskell.fou

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Generalized Dijkstra in Haskell

acatalepsie.fr/posts/haskell-d

Discussions: discu.eu/q/https://acatalepsie

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Aztecs: A type-safe and friendly ECS for Haskell

github.com/matthunz/aztecs

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 21, 2024. jaalonso.github.io/vestigium/p

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Solving perfect numbers quickly with Haskell. ~ Andrew MacGillivray. gist.github.com/amacgillivray/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

An imperative programmer tries to learn Haskell. ~ Thane Thomson. hatwd.com/p/an-imperative-prog

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 20, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Project: M36 (Relational Algebra Engine)

github.com/agentm/project-m36

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

: Reiteración de suma de consecutivos. jaalonso.github.io/exercitium/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 19, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Indexing code at scale with Glean

engineering.fb.com/2024/12/19/

Discussions: discu.eu/q/https://engineering

Shae Erisson's avatar
Shae Erisson

@shapr@recurse.social

Is there an active content management system written in ?

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Remote Haskell position (but must be in EU/EES) at Scrive

careers.scrive.com/jobs/536542

Discussions: discu.eu/q/https://careers.scr

Björn Gohla's avatar
Björn Gohla

@6d03@mathstodon.xyz

My work is recruiting a developer. Some experience is apparently required.

Full remote in or is possible.

It's a great place to work, by the way.

careers.scrive.com/jobs/536542

(We are also hiring for other tech roles, including an developer.)

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Linear calculi: A comparison approach. ~ Ana Jorge Carvalho de Soares Almeida. repositorio-aberto.up.pt/bitst

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Lift instance cause Cabal build error: unknown symbol with CFFI but Cabal repl works fine.

github.com/yourcomrade/FloPoCo

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Introducing bevy-remote-hs: a Haskell library for interfacing with the Bevy game engine

github.com/matthunz/bevy-remot

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

An imperative programmer tries to learn Haskell

hatwd.com/p/an-imperative-prog

Discussions: discu.eu/q/https://hatwd.com/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Announcing Decision Drill

entropicthoughts.com/announcin

Discussions: discu.eu/q/https://entropictho

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Effectful - Build Fast & Reliable Haskell Applications

haskell-effectful.github.io/

Discussions: discu.eu/q/https://haskell-eff

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

The Effectful effect system has a website: haskell-effectful.github.io

discourse.haskell.org/t/the-ef

Discussions: discu.eu/q/https://discourse.h

vascorsd's avatar
vascorsd

@vascorsd@mastodon.social

Glasgow Compiler 9.12.1 Release notes | Lobsters
lobste.rs/s/pyjhml/glasgow_has

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Proposal: improve the time performance of `Data.List.unsnoc`

github.com/haskell/core-librar

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 16, 2024. jaalonso.github.io/vestigium/p #

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

GHC 9.12.1 is now available - Announcements

discourse.haskell.org/t/ghc-9-

Discussions: discu.eu/q/https://discourse.h

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Bottom-up computation using trees of sublists. ~ Shin-Cheng Mu. cambridge.org/core/journals/jo

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Contributing an mdoc reader to Pandoc

duckrabbit.tech/articles/mdoc.

Discussions: discu.eu/q/https://duckrabbit.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Glasgow Haskell Compiler 9.12.1 Release notes

downloads.haskell.org/ghc/9.12

Discussions: discu.eu/q/https://downloads.h

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell recap for week 50/2024

discu.eu/weekly/haskell/2024/5

Get RSS feeds and support this bot with the premium plan: discu.eu/premium

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 15, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Proposal: add `withForeignPtrST` and `touchForeignPtrST`

github.com/haskell/core-librar

Discussions: discu.eu/q/https://github.com/

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Category theory using Haskell (An introduction with Moggi and Yoneda). ~ Shuichi Yukita. link.springer.com/book/10.1007

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Repost: 2-3 Weeks Haskell Onboarding From Zero (Google, FPComplete)

news.ycombinator.com/item?id=2

Discussions: discu.eu/q/https://news.ycombi

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Google Summer of Code 2024 Wrap-up

blog.haskell.org/gsoc-2024/

Discussions: discu.eu/q/https://blog.haskel

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Я ☞ Hello, World!

youtube.com/watch?list=PLzkSCN

Discussions: discu.eu/q/https://www.youtube

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

in day 13, supplemental: realized that I don't need a decimal library, just Data.Ratio(Rational). Nice.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Proposal: add enumerate :: (Enum a, Bounded a) => [a]

github.com/haskell/core-librar

Discussions: discu.eu/q/https://github.com/

Andres Löh's avatar
Andres Löh

@kosmikus@functional.cafe

I wonder if today's (14) task was specifically designed to be difficult for AI to solve due to vague specification, or if that's actually a problem that AI is particularly good at.

I was first slightly annoyed at having to guess, but then I got it with my first solution attempt (in ), so I'm happy enough.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

[Well-Typed] GHC activities report: September-November 2024

well-typed.com/blog/2024/12/gh

Discussions: discu.eu/q/https://www.well-ty

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

in , day 13. First part was pretty easy. Second part would have been easy if sbv wasn't broken in . I didn't want to just increase the precision.

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 11, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Solving a ResourceT-related space leak in production

exploring-better-ways.bellroy.

Discussions: discu.eu/q/https://exploring-b

J3RN :fedora: :elixir: :emacs:'s avatar
J3RN :fedora: :elixir: :emacs:

@j3rn@fosstodon.org

question: Is there a function for "reapply this function to a starting value N times"? e.g. `doTimes (*2) 3 1` would return `8` ((*2) $ (*2) $ (*2) $ 1). I know I could chain take and iterate and then do a Data.List.last, but that has crumby performance for very large values of N.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Internship opportunity with NASA programming in Rust

stemgateway.nasa.gov/s/course-

Discussions: discu.eu/q/https://stemgateway

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell Interlude 59: Harry Goldstein

haskell.foundation/podcast/59/

Discussions: discu.eu/q/https://haskell.fou

Aly-Bocar's avatar
Aly-Bocar

@gangineering@mas.to

people
I hope you're doing fine !

I got this every time I compile, I'm tired of it. Any idea why ?

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

When is a call stack not a call stack? ~ Chris Smith. cdsmithus.medium.com/when-is-a

José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

Readings shared December 10, 2024. jaalonso.github.io/vestigium/p

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

When is a call stack not a call stack?

cdsmithus.medium.com/when-is-a

Discussions: discu.eu/q/https://cdsmithus.m

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Parser Combinators Beat Regexes

entropicthoughts.com/parser-co

Discussions: discu.eu/q/https://entropictho

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

in , day 10 was a breeze and also quite fun. Still didn't use comonads because of time constraints. 😐

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

The Haskell Programmer's Guide to the IO Monad

stefan-klinger.de/files/monadG

Discussions: discu.eu/q/https://stefan-klin

ZuriHac's avatar
ZuriHac

@zurihac@fosstodon.org

🙋 Hello Haskell community!

Are you dreaming of hacking away during sunny days at the foot of the Alps together with hundreds of other Haskellers?
We are busy making this dream a reality for you!

From this account, we will be posting upcoming information about next year's edition of ZuriHac.

So stay tuned and spread the word!

Björn Gohla's avatar
Björn Gohla

@6d03@mathstodon.xyz

Anyone looking for a Job, or remote in EU/EEA?

~I will update this post when I have more details.~

Here is the job posting: careers.scrive.com/jobs/536542

We are also looking for an engineer.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

3D Printed Programming Language Logo Tree Ornaments: Designed in Haskell

github.com/joe-warren/christma

Discussions: discu.eu/q/https://github.com/

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell: A Great Procedural Language

entropicthoughts.com/haskell-p

Discussions: discu.eu/q/https://entropictho

洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@fosstodon.org · Reply to 洪 民憙 (Hong Minhee)'s post

It supports , .js, , , , , , and out of box. Excellent! I with it would support as well though.

mise.jdx.dev/core-tools.html

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Hydra, a code counting program written in Haskell.

github.com/haq0/hydra

Discussions: discu.eu/q/https://github.com/

Lionhairdino's avatar
Lionhairdino

@lionhairdino@mastodon.social

순수 함수로 상태 모델링을 어찌하는가를 정리한 글입니다. 혼자 상상이니, 정식 텍스트 같은 내용을 기대하진 마세요.
lionhairdino.github.io/posts/2

Jons Mostovojs's avatar
Jons Mostovojs

@jonn@social.doma.dev

Just as I had to got rid of tag (in favour of ), sadly, I feel like it's time to get rid of tag in my bio.

I'm doing a rewrite of backend now and while I'm not ruminating too much over the time and money spent on backend, I find it so much cheaper and faster to write in well-typed languages.

I really hope to become profitable so that I can have a look at + + combo, but I think I'm years away from such a luxury.

Anupam 《ミ》λ≡'s avatar
Anupam 《ミ》λ≡

@haskman@functional.cafe

I have a machine with 32GB RAM and barely use 8GB of it. I run with hundreds of tabs, open , , and projects all at the same time. Have and apps running, and the memory usage still hovers around 8GB.Seems like I should be using Docker and Kubernetes just to feel like I'm using my machine to its potential 😆

Boyd Stephen Smith Jr.'s avatar
Boyd Stephen Smith Jr.

@BoydStephenSmithJr@hachyderm.io

Would it be insane to create a git repository that has , , AND packages in it?

My main concern is that some of the package distribution tooling I've dealt with seems to assume/prefer the package is at the top-level of the git repo.

Should I be using *submodules*!? (Plz, no!)

I think it's going to be informative to keep the packages coherent, and one repo seems like it could be a way to do that.

kakkun61's avatar
kakkun61

@kakkun61@pawoo.net

間に合うのかねえ

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Deploying a Single-Binary Haskell Web App

entropicthoughts.com/deploying

Discussions: discu.eu/q/https://entropictho

justsoup's avatar
justsoup

@justsoup@mstdn.social

Since I am the newest Trusted Contributor with I thought I would give a little introductory post. :blob_derpy:

Heyo! My name is Aster (they/them) and I do stuff with ! I am hard at work getting immutability up and running on pmOS with the help of the amazing work being done to port .

You may know me for my work on on pmOS, my favorite desktop environment!

I also dabble in and a bit of .

Excited to work with all of y'all!

Jesper Agdakx's avatar
Jesper Agdakx

@jesper@agda.club

For Haskell packages published on Hackage, do you prefer version bounds on dependencies to be narrower or wider?

narrow ~ “We have tested that the package builds with dependencies that fall in this range”

wide ~ “Things are very likely to break if you use a version outside of this range, but we haven’t necessarily tested every version in it”

Case in point, I’m considering for agda2hs whether to bump the bound on base to only include the versions we actually test on CI, or to also include older versions that might still work but aren’t currently tested.

#Haskell #hackage #packages #agda

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Failed to install HLS

haskell.org/ghcup/sh/bootstrap

Discussions: discu.eu/q/https://www.haskell

Anupam 《ミ》λ≡'s avatar
Anupam 《ミ》λ≡

@haskman@functional.cafe

There is a fundamental difference between for the sake of convenience (I can build an entire app quickly. Think framework of the day), vs complexity for the sake of robustness (I can make changes to the app quickly without introducing new bugs. Think or ).

When you are not familiar with the tech, both can look the same, but they are not. The latter is actually in disguise

Philipp :emacs: :nixos:'s avatar
Philipp :emacs: :nixos:

@pmidden@fosstodon.org

In , is there a way to have doctests that just compile and not run? I have some IO code that I cannot execute in an isolated fashion.

MrBerard 😎👉👉's avatar
MrBerard 😎👉👉

@MrBerard@pilote.me

Mastodon's global search only works on hashed tags, not text, so:




Teacher













RanaldClouston's avatar
RanaldClouston

@RanaldClouston@fediscience.org

I've been on Mastodon for a year, so it's time for a new pinned post with an updated dog pic! I'm a lecturer in at Australian National University in , / country. I research , , and a little , and teach an intro to programming class in . Sometimes I post about work; when I'm busy at work I'm more likely to post about , my , and other pleasant distractions

A black shaggy labradoodle in a red harness stands on some grass, looking with open mouth at the camera
ALT text detailsA black shaggy labradoodle in a red harness stands on some grass, looking with open mouth at the camera
Timothy Wolodzko's avatar
Timothy Wolodzko

@tymwol@hachyderm.io

- what if everything was a pointer
- what if everything was a linked list
- what if everything was a pure function
- what if everything was a stack
- what if everything was a hash map
- what if everything was immutable
- what if everything was a pattern to match
- what if everything was a class
- what if everything was a memory allocation problem
- what if everything != nil
- what if everything was everything

DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

--enable-multi-repl has arrived to cabal-install! 🎉

It still has some limitations, but it should work for speeding up ghcid-based development, and hopefully making HLS more reliable.

discourse.haskell.org/t/cabal-
github.com/haskell/cabal/blob/

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

JSON is probably the most used standard file format for storing and transmitting data on the Internet in recent times. It has a simple syntax with only four scalar data types and two composite data types. So, writing a parser for is a great exercise for learning the basics of parsing.

That's exactly what I did: I wrote a JSON from scratch in . Read my post to learn about basics of parsing, nuances of the JSON syntax, and parser combinators and property-based in Haskell: abhinavsarkar.net/posts/json-p

A transition diagram depicting the JSON syntax.
ALT text detailsA transition diagram depicting the JSON syntax.
DiazCarrete's avatar
DiazCarrete

@DiazCarrete@hachyderm.io

hackage.haskell.org/package/ne
ietf.org/rfc/rfc2396.txt
webmasters.stackexchange.com/a

"A relative reference that begins with a single slash character is termed an absolute-path reference. A relative reference that does not begin with a slash character is termed a relative-path reference."

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Why is Prettier rock solid? Haskell!

mrmr.io/til/prettier

Discussions: discu.eu/q/https://mrmr.io/til

Cass Alexandru's avatar
Cass Alexandru

@cxandru@types.pl

Painted a mug with my preferred tech stack:
(Also featured: the Σ ⊣ Δ ⊣ Π adjunction sequence from the categorical semantics of (dependent) type theory)

Joe's avatar
Joe

@hungryjoe@functional.cafe

If anyone's interested in the combination of & / I've been working on a library for declarative solid modeling

hackage.haskell.org/package/wa
github.com/joe-warren/opencasc

A solid of revolution, specifically a Pawn chess piece, rendered in grey on a blue background
ALT text detailsA solid of revolution, specifically a Pawn chess piece, rendered in grey on a blue background
An involute gear, relatively thin, 20 teeth, rendered in grey on a blue background
ALT text detailsAn involute gear, relatively thin, 20 teeth, rendered in grey on a blue background
result of sweeping a kind of "rounded star" shape along a curved line, looks kind of like a line of toothpaste, rendered in grey on a blue background,
ALT text detailsresult of sweeping a kind of "rounded star" shape along a curved line, looks kind of like a line of toothpaste, rendered in grey on a blue background,
A rounded cube, with cylinders cut into it (an example of constructive solid geometry), rendered in grey on a blue background
ALT text detailsA rounded cube, with cylinders cut into it (an example of constructive solid geometry), rendered in grey on a blue background
Antoine Leblanc :transHaskell:'s avatar
Antoine Leblanc :transHaskell:

@nicuveo@tech.lgbt

I've been meaning to write this down for a long while, but i've made it a youtube essay instead, as an experiment, to learn something new; so: what the hell is the problem with monads?
youtube.com/watch?v=LekhueQ4zVU

HoldMyType's avatar
HoldMyType

@xameer@mathstodon.xyz

I am not fully convinced here , maybe lazy eval is a cult

In a lazy evaluation scheme, the evaluation of an expression is deferred until the
value of the expression is actually needed elsewhere in the computation. That
is, the expression is evaluated on demand. This contrasts with what is called
eager evaluation in which an expression is evaluated as soon as its inputs are
available.
For example, if eager evaluation is used, an argument (which may be an arbi-
trary expression) of a function call is evaluated before the body of the function.
If lazy evaluation is used, the argument is not evaluated until the value is actu-
ally needed during the evaluation of the function body. If an argument’s value
is never needed, then the argument is expression is never evaluated.
Why should we care? Well, this facility allows programmers to construct and
use data structures that are conceptually unbounded or infinite in size. As
long as a program never actually needs to inspect the entire structure, then a
terminating computation is still possible.
For example, we might define the list of natural numbers as a list beginning
with 0, followed by the list formed by adding one to each element of the list of
natural numbers.
Lazy evaluation thus allows programmers to separate the data from the control.
They can define a data structure without having to worry about how it is
processed and they can define functions that manipulate the data structure
without having to worry about its size or how it is created. This ability to
separate the data from the control of processing enables programs to be highly
modular

john.cs.olemiss.edu/~hcc/csci4

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Anti-Instances in Haskell

heneli.dev/blog/anti-instances

Discussions: discu.eu/q/https://www.heneli.

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Difference between type variables, unification variables and skolems

cohost.org/prophet/post/222073

Discussions: discu.eu/q/https://cohost.org/

Aurora 🏳️‍⚧️'s avatar
Aurora 🏳️‍⚧️

@tuturto@mastodon.art

time for an

I'm Tuula Aurora, a trans woman living in Finland and trying to figure out the world.

I tend to switch from hobby to hobby when it strikes my fancy.

I like coding and switch from language to language (, , ). Sometimes I try to wrap my head around or .

I also like and doodle silly things on the margins now and then.

Also, tell me about your cool project. I love hearing what people are creating.

Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

I ported @mattmight’s conversion code (matt.might.net/articles/cps-co) to and after some fighting with the type system, it worked! To make the work with the Cont monad, I had to remove recursive lets and hence, functions being able to call themselves recursively, but the rest works fine.

The attached images show the conversion of the Fibonacci function into the CPS version.

Fibonacci function in Lisp:

(let
  ([fib
     (λ (n)
       (let
         ([fib'
            (λ (n f)
              (if (= n 0)
                0
                (if (= n 1)
                  1 
                  (+ (f (- n 1) f) (f (- n 2) f)))))])
         (fib' n fib')))])
  (fib 10))
ALT text detailsFibonacci function in Lisp: (let ([fib (λ (n) (let ([fib' (λ (n f) (if (= n 0) 0 (if (= n 1) 1 (+ (f (- n 1) f) (f (- n 2) f)))))]) (fib' n fib')))]) (fib 10))
Fibonacci function in Lisp:

(let
  ([fib
     (λ (n)
       (let
         ([fib'
            (λ (n f)
              (if (= n 0)
                0
                (if (= n 1)
                  1 
                  (+ (f (- n 1) f) (f (- n 2) f)))))])
         (fib' n fib')))])
  (fib 10))
ALT text detailsFibonacci function in Lisp: (let ([fib (λ (n) (let ([fib' (λ (n f) (if (= n 0) 0 (if (= n 1) 1 (+ (f (- n 1) f) (f (- n 2) f)))))]) (fib' n fib')))]) (fib 10))
CPS version of Fibonacci function in Lisp:

(let
  ([fib
     (λ (n k0)
       (let
         ([fib'
            (λ (n f k1)
              ((λ (k2)
                 ((λ (v3)
                    (if v3
                      (k2 0)
                      ((λ (k4)
                         ((λ (v5)
                            (if v5
                              (k4 1)
                              ((λ (v9)
                                 (f v9 f
                                   (λ (v6)
                                     ((λ (v8)
                                        (f v8 f 
                                          (λ (v7) 
                                            (k4 (+ v6 v7)))))
                                      (- n 2)))))
                               (- n 1))))
                          (= n 1)))
                       k2)))
                  (= n 0)))
               k1))])
         (fib' n fib' k0)))])
  (fib 10 return))
ALT text detailsCPS version of Fibonacci function in Lisp: (let ([fib (λ (n k0) (let ([fib' (λ (n f k1) ((λ (k2) ((λ (v3) (if v3 (k2 0) ((λ (k4) ((λ (v5) (if v5 (k4 1) ((λ (v9) (f v9 f (λ (v6) ((λ (v8) (f v8 f (λ (v7) (k4 (+ v6 v7))))) (- n 2))))) (- n 1)))) (= n 1))) k2))) (= n 0))) k1))]) (fib' n fib' k0)))]) (fib 10 return))
CPS version of Fibonacci function in Lisp:

(let
  ([fib
     (λ (n k0)
       (let
         ([fib'
            (λ (n f k1)
              ((λ (k2)
                 ((λ (v3)
                    (if v3
                      (k2 0)
                      ((λ (k4)
                         ((λ (v5)
                            (if v5
                              (k4 1)
                              ((λ (v9)
                                 (f v9 f
                                   (λ (v6)
                                     ((λ (v8)
                                        (f v8 f 
                                          (λ (v7) 
                                            (k4 (+ v6 v7)))))
                                      (- n 2)))))
                               (- n 1))))
                          (= n 1)))
                       k2)))
                  (= n 0)))
               k1))])
         (fib' n fib' k0)))])
  (fib 10 return))
ALT text detailsCPS version of Fibonacci function in Lisp: (let ([fib (λ (n k0) (let ([fib' (λ (n f k1) ((λ (k2) ((λ (v3) (if v3 (k2 0) ((λ (k4) ((λ (v5) (if v5 (k4 1) ((λ (v9) (f v9 f (λ (v6) ((λ (v8) (f v8 f (λ (v7) (k4 (+ v6 v7))))) (- n 2))))) (- n 1)))) (= n 1))) k2))) (= n 0))) k1))]) (fib' n fib' k0)))]) (fib 10 return))
Abhinav 🌏's avatar
Abhinav 🌏

@abnv@fantastic.earth

I wrote the fourth part of my series “Implementing Co, a small programming language with ”. And this time, we add support for channels in for inter-coroutine communication. abhinavsarkar.net/posts/implem

redmp (EDITED)'s avatar
redmp (EDITED)

@redmp@recurse.social

@jmct challenge accepted

(baton roue image macro)

* man riding bike: "efficient pure functional programming"
* man puts stick between spokes: "lazy evaluation"
* man on ground holding knee: "BangPatterns StrictData Strict MagicHash UnboxedTuples UnliftedNewtypes UnboxedSums UnliftedDatatypes"

The haskell logo is pasted over the man's face in all frames.
ALT text details(baton roue image macro) * man riding bike: "efficient pure functional programming" * man puts stick between spokes: "lazy evaluation" * man on ground holding knee: "BangPatterns StrictData Strict MagicHash UnboxedTuples UnliftedNewtypes UnboxedSums UnliftedDatatypes" The haskell logo is pasted over the man's face in all frames.
José A. Alonso's avatar
José A. Alonso

@Jose_A_Alonso@mathstodon.xyz

falsify: Hypothesis-inspired shrinking for Haskell. ~ Edsko de Vries. well-typed.com/blog/2023/04/fa

HoldMyType's avatar
HoldMyType

@xameer@mathstodon.xyz

A category with a terminal object, products and exponentials
is called a Cartesian Closed Category (CCC). N
For example, Set is a CCC. Another class of examples are Boolean algebras,
seen as categories:
• Products are given by conjunctions A ∧ B. We define exponentials as im-
plications:
A ⇒ B := ¬A ∨ B .
• Evaluation is just Modus Ponens,
(A ⇒ B) ∧ A ≤ B
while couniversality is the Deduction Theorem,
C ∧ A ≤ B ⇐⇒ C ≤ A ⇒ B

HoldMyType's avatar
HoldMyType

@xameer@mathstodon.xyz

defenseless thesis on 🧅s

Abstract:
later
Author :
Me
Assumption :
1. there are no onions , such that number of layers of an onion are 0 .
Law : You have no way to record all you knife ops .
2. Given theory T , for \[x \in T \], x need not be either true or false
if onions here are a functor they are also free monad
\[Op\]- now you peel of a layer from one
\[Op^{-1}\]you can wrap it back too
when you do that , you have a monoid.
How do you write a computable abstract syntax tree (AS A monad computation) for these ops
REFERENCES - LATER
To be contd

HoldMyType's avatar
HoldMyType

@xameer@mathstodon.xyz

So one way to define is to write recursive function that defines its inputs in terms of the outputs, which the function gives using initial inputs and so on.
So domain corresponds to rand and vice versa and this describes continuity of the function?
Can we define the continuity in like this
Why types should I use if i write it in
Aha others are thinking about it too
Albeit, i don't think I can treat arrows like applicatives in my approach
Quote
fetching gives you a source promise and you want an image promise
writing pipelines using arrow notation is difficult because we have to program in a point-free style (without variables).
ci- is cool
codeberg.org/Codeberg-CI/reque
roscidus.com/blog/blog/2019/11
via @talex5

lispwitch's avatar
lispwitch

@lispwitch@octodon.social

kradvortoj

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Is Meta decommissioning Sigma?

engineering.fb.com/2015/06/26/

Discussions: discu.eu/q/https://engineering

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Overloading the lambda abstraction in Haskell

acatalepsie.fr/posts/overloadi

Discussions: discu.eu/q/https://acatalepsie

Haskell Weekly's avatar
Haskell Weekly

@haskell_discussions@mastodon.social

Haskell, Ada, C++, Awk: An Experiment in Prototyping Productivity (1994) [pdf]

cs.yale.edu/publications/techr

Discussions: discu.eu/q/https://www.cs.yale

Dino's avatar
Dino

@dino@masto.ai

. user.

Ross Gardiner's avatar
Ross Gardiner

@rossng@indieweb.social

Hello! I guess I'm here now. 👋

You might find me talking about some of these nerdy topics:

And these slightly different nerdy topics:

Mark Reid's avatar
Mark Reid

@mdreid@mastodon.social

I got a suggestion to use hashtags to help kickstart my network here. So here's a hashtag-dense list of my interests:

I'm a data-focused engineer at , working with , , and which I write with a accent. I used to work in .

I enjoy long distance and and am training for my first .

In my spare time I make electronic /#Eurorack music and am learning and the .

das-g's avatar
das-g

@das_g@chaos.social

Hallo Fediversum!

Obwohl ich bereits einen Account auf @das_g@en.osm.town hatte, bin ich . 👋

: Als an einer 🎓Fachhochschule 👨‍🏫betreue ich Übungen & 👩‍🔧Praktika, 👨‍💻entwickle und 👨‍🔬betreibe angewandte "". In meiner Freizeit trage ich zu 🗺️ bei und lerne & spreche 💚. Ich interessiere mich für & |n wie und für das :jugend_hackt: Beibringen des |s.

das-g's avatar
das-g

@das_g@chaos.social

Saluton Fediverso!

Kvankam mi antaŭe havis konton ĉe @das_g@en.osm.town, mi estas 👋.

: Mi laboras kiel 👨‍🏫 & 👨‍💻 /👨‍🔬"" ĉe 🎓fakaltlernejo. Libertempe mi kontribuas al 🗺️ kaj (evidente) mi estas 💚. Mi interesiĝas interalie pri kiel kaj pri :jugend_hackt: de .

Christopher League's avatar
Christopher League

@league@scholar.social

Reactivating — Hello! I’m into:
• Functional programming, especially , , ,
• Proof systems & software correctness tools , , ,
• Scientific data acquisition & analysis, frameworks
• Reproducible builds, ,
• Non-traditional families (, interracial)
strategies & other perspectives
• Black natural hair care, for Ms. 7yo
& electronic music, dabbling at piano as a busy adult