洪 民憙 (Hong Minhee)'s avatar

洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · 899 following · 1120 followers

An intersectionalist, feminist, and socialist guy living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

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

@hongminhee@hollo.social

Hello, I'm an open source software engineer in my late 30s living in , , and an avid advocate of and the .

I'm the creator of @fedify, an server framework in , @hollo, an ActivityPub-enabled microblogging software for single users, and @botkit, a simple ActivityPub bot framework.

I'm also very interested in East Asian languages (so-called ) and . Feel free to talk to me in , (), or (), or even in Literary Chinese (, )!

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

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

安寧(안녕)하세요, 저는 서울에 살고 있는 30() 後半(후반) 오픈 소스 소프트웨어 엔지니어이며, 自由(자유)·오픈 소스 소프트웨어와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)입니다.

저는 TypeScript() ActivityPub 서버 프레임워크인 @fedify 프로젝트와 싱글 유저() ActivityPub 마이크로블로그인 @hollo 프로젝트와 ActivityPub 봇 프레임워크인 @botkit 프로젝트의 製作者(제작자)이기도 합니다.

저는 ()아시아 言語(언어)(이른바 )와 유니코드에도 關心(관심)이 많습니다. 聯合宇宙(연합우주)에서는 國漢文混用體(국한문 혼용체)를 쓰고 있어요! 제게 韓國語(한국어)英語(영어), 日本語(일본어)로 말을 걸어주세요. (아니면, 漢文(한문)으로도!)

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

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

こんにちは、私はソウルに住んでいる30代後半のオープンソースソフトウェアエンジニアで、自由・オープンソースソフトウェアとフェディバースの熱烈な支持者です。名前は洪 民憙ホン・ミンヒです。

私はTypeScript用のActivityPubサーバーフレームワークである「@fedify」と、ActivityPubをサポートする1人用マイクロブログである 「@hollo」と、ActivityPubのボットを作成する為のシンプルなフレームワークである「@botkit」の作者でもあります。

私は東アジア言語(いわゆるCJK)とUnicodeにも興味が多いです。日本語、英語、韓国語で話しかけてください。(または、漢文でも!)

Esprit de Vore's avatar
Esprit de Vore

@aphyr@woof.group

uspol, gitlab

Oh, okay archive.is/okSlz

Brian Robbins, finance chief for ... GitLab, said GitLab is aligned with the goals of DOGE
ALT text detailsBrian Robbins, finance chief for ... GitLab, said GitLab is aligned with the goals of DOGE
xenon's avatar
xenon

@xenon@xenon.social

xenon beta 0.0.1.9 is out! Now xenon support video media type

Linear's avatar
Linear

@linear@hackers.pub

hackers.pub 모바일 앱이 있으면 좋겠다 일단 iOS 개발자가 손을 들어봅니다 ㅋㅋ

Linear's avatar
Linear

@linear@hackers.pub · Reply to Linear's post

@linear 마크다운이 먹는다니 감격스러워 ㅠㅠ

Linear's avatar
Linear

@linear@hackers.pub

오늘의 일기

  • hackers.pub 첫 포스트!
  • 첫 수영 수업을 다녀왔다. 전날 밤에 악몽 꿀 정도로 긴장했는데 다행히 가서 음파음파 잘 하고 왔다. (..)
  • SNS 여러 개는 도저히 못 쓰겠다는 결론을 내리고 블루스카이 탈퇴.
  • 스마트폰 사용 시간을 줄이기 위해 디스플레이를 흑백으로 바꿨다.
  • 과연 올해야말로 블로그 대통합을 이룰 수 있을 것인가? 네이버 블로그에 쌓여 있는 글을 모두 나만의 정적 웹사이트로 옮기고 애매하게 둥둥 떠 있는 github pages 는 없애는 게 목표.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@fedify@hollo.social

Got an interesting question today about 's outgoing design!

Some users noticed we create separate queue messages for each recipient inbox rather than queuing a single message and handling the splitting later. There's a good reason for this approach.

In the , server response times vary dramatically—some respond quickly, others slowly, and some might be temporarily down. If we processed deliveries in a single task, the entire batch would be held up by the slowest server in the group.

By creating individual queue items for each recipient:

  • Fast servers get messages delivered promptly
  • Slow servers don't delay delivery to others
  • Failed deliveries can be retried independently
  • Your UI remains responsive while deliveries happen in the background

It's a classic trade-off: we generate more queue messages, but gain better resilience and user experience in return.

This is particularly important in federated networks where server behavior is unpredictable and outside our control. We'd rather optimize for making sure your posts reach their destinations as quickly as possible!

What other aspects of Fedify's design would you like to hear about? Let us know!

A flowchart comparing two approaches to message queue design. The top half shows “Fedify's Current Approach” where a single sendActivity call creates separate messages for each recipient, which are individually queued and processed independently. This results in fast delivery to working recipients while slow servers only affect their own delivery. The bottom half shows an “Alternative Approach” where sendActivity creates a single message with multiple recipients, queued as one item, and processed sequentially. This results in all recipients waiting for each delivery to complete, with slow servers blocking everyone in the queue.
ALT text detailsA flowchart comparing two approaches to message queue design. The top half shows “Fedify's Current Approach” where a single sendActivity call creates separate messages for each recipient, which are individually queued and processed independently. This results in fast delivery to working recipients while slow servers only affect their own delivery. The bottom half shows an “Alternative Approach” where sendActivity creates a single message with multiple recipients, queued as one item, and processed sequentially. This results in all recipients waiting for each delivery to complete, with slow servers blocking everyone in the queue.
MDN Web Docs's avatar
MDN Web Docs

@mdn@mastodon.social

🧪 Experiment with Temporal in @firefoxnightly!

The New API has,
✅ Time Zone Support – Easy UTC conversions!
✅ Precise Calculations – Leap years, daylight savings
✅ Built-in Parsing & Formatting – No need for third-party libraries

Start exploring 👇
developer.mozilla.org/en-US/do

KAGAMI🏳️‍🌈🏳️‍⚧️'s avatar
KAGAMI🏳️‍🌈🏳️‍⚧️

@saschanaz@sekai.social · Reply to KAGAMI🏳️‍🌈🏳️‍⚧️'s post

마스토돈 미스키하는분들은 살포시 @bsky.brid.gy@bsky.brid.gy 요계정 검색해서 팔로하시면 블루스카이에 새로 온 트친들과도 교류가 가능합니다 좋은정보 널리널리퍼뜨려주세요

KAGAMI🏳️‍🌈🏳️‍⚧️'s avatar
KAGAMI🏳️‍🌈🏳️‍⚧️

@saschanaz@sekai.social

블스하는분들 https://bsky.app/profile/ap.brid.gy 이계정 살포시 팔로만 해주시면 저같이 변방에서 마스토돈 미스키하는 사람들도 여러분의 잼얘를 볼수가 있습니다

변방의 연합우주 유저를 위해 널리널리퍼뜨려주세요

MoonBit's avatar
MoonBit

@moonbitlang@mastodon.social

🌕 MoonBit Update Vol.67

- Pattern guard
- Deprecating implicit trait implementation via methods
- Attribute syntax
- Enums support custom tag values

🌟 Full update: moonbitlang.com/weekly-updates
⬇ Download: aka.moonbitlang.com/vsx

KAGAMI🏳️‍🌈🏳️‍⚧️'s avatar
KAGAMI🏳️‍🌈🏳️‍⚧️

@saschanaz@sekai.social

바에서 나치를 내쫓지 않으면 나치 바가 된다는 말이 있는데 남성사회도 그렇다. 남자한테는 해가 되지 않는다는 이유로 여성혐오 내뿜는 한심한 남자들을 그냥 방치한 결과가 온갖 여성혐오로 물든 나치바 남성사회인 것이다. 남성에 대한 일반화고 자시고 불평을 할 게 아니라 있는 힘껏 바에서 나치를 몰아내야 한다.

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

@hongminhee@hollo.social

日本語では【放棄】も【抛棄】も同じ「ほうき」という読み方なので、区別せずに使う事が多い様に思う。しかし、韓国語ではそれぞれ【放棄パンギ】と【抛棄ポギ】で読み方が違う為、ニュアンスを区別して使う。【放棄】は義務が有るにも係わらず見捨てたり、出来るにも係わらず面倒で見捨てたりするニュアンスが強く、【抛棄】はどうしても見捨てるしかなくて断念するというニュアンスが強い。

https://hollo.social/@hongminhee/01957f56-9cdb-7f73-9b10-4bf38493b73f

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

@hongminhee@hollo.social

아무래도 Hackers' Pub을 개밥먹기 하려면 @hongminhee 쪽을 메인 어카운트로 써야할 것 같은데, 이쪽도 이쪽대로 Hollo를 개밥먹기 하기 ()해 쓰고 있어서 둘 다 抛棄(포기)할 수 없다… 😇

Steve Purcell's avatar
Steve Purcell

@sanityinc@hachyderm.io · Reply to 洪 民憙 (Hong Minhee)'s post

@hongminhee Agree with most of this, but it's slightly unfair to compare the syntaxes, when "let*" in ocaml can make it look closer to Haskell's "do" blocks. After all, "do" is simply (a nice) syntactic sugar for those same chained binds and lambdas, and you could write the Haskell in that style too. Fwiw, I've gone in the other direction over time, from Haskell to Ocaml, partly because the typeclasses make type inference harder and the resulting compiler errors so much less clear.

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

@hongminhee@hollo.social · Reply to 김선민's post

@kimsm 듣기로는 떠난 분들이 이미 꽤 계신 것 같더라고요… 아무튼 앞으로의 행보를 응원하겠습니다!

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

@hongminhee@hollo.social · Reply to 김선민's post

@kimsm 아이고, 그래도 아직 회사는 다니고 계시나요? 저는 이제 슬슬 취직 준비를 하려고요…

드라코's avatar
드라코

@draco@pointless.chat

[단독] 'p 발음 금지' 공문 뿌린 삼성전자…파운드리 사업부 경영진단 검토

n.news.naver.com/mnews/article

메일에 따르면 삼성전자는 "파운드리의 발음기호는 [faundri]로, 'p'와 'f'발음을 구분해서 사용해야 한다"며, "사업부 명칭이 통일되지 않아 고객들이 혼란을 느끼고 있다"고 밝혔다.

이어 "파운드리 사업부의 영어 명칭은 'Foundry business'"라며, "한글로 된 사업부 명칭은 표기하지 말라"는 지침도 제시했다.

사내 보고 및 대내외 문서에 한글 명칭 '파운드리'를 사용하지 말라는 지침에 따라 공지 이후에는 영문 명칭 'foundry'만 사용이 가능하다.

....니들이 지금 그런거 따질 여유가 있냐?

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

@hongminhee@hollo.social

Kubernetesを勉強しないといけないと十年間思うばかり。

https://c.koliosky.com/notes/a569oyjrg3yy090c

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

@hongminhee@hollo.social · Reply to Hwee-Boon Yar's post

@hboon @cheeaun Yeah, I've heard a lot of people say that Claude Code is expensive. Thanks for sharing your experience!

Hwee-Boon Yar's avatar
Hwee-Boon Yar

@hboon@mastodon.social · Reply to Hwee-Boon Yar's post

@cheeaun @hongminhee ...Both of them are game-changers, but Claude Code is agentic and the UI is much more polished. I plan to use it much more, but it's going to be quite expensive— I imagine at least 100 to a few hundreds a month.

Hwee-Boon Yar's avatar
Hwee-Boon Yar

@hboon@mastodon.social · Reply to Hwee-Boon Yar's post

@cheeaun @hongminhee
When I started out, I tried running both tasks in both Aider and Claude Code and the latter is often at least 2x more expensive but it usually does what I want it to do and when it doesn't, I don't spend too much trying to convince it; I manually fix it instead. It also seems to know better what tools I use or my preferences compared to Aider despite using the same model.

Hwee-Boon Yar's avatar
Hwee-Boon Yar

@hboon@mastodon.social · Reply to Chee Aun 🤔's post

@cheeaun @hongminhee I've only tried Cursor a little because I tried VS Code a few times over the years but I couldn't get into it and hence Cursor (due to vim), so I can't compare it directly to Cursor.

I used aider.chat (with 3.7 Sonnet) with Neovim and WebStorm. It has a composer-ish (but not agentic) and cmd-K like modes. I have started using Claude Code much more recently and it has replaced the composer part of my workflow, but I still use Aider for the cmd-K part.

티르's avatar
티르

@tirr@mitir.social

[...'node'].sort().join('') === 'deno'

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

@hongminhee@hollo.social

Reading Steve Yegge's review of Claude Code just convinced me to give it a try. Sounds like it could be a game-changer! Anyone else tried it yet?

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

@hongminhee@hollo.social

봄이 다가올 때마다 듣는 IU의 앨범 《LILAC》.

IU의 앨범 《LILAC》을 틀고 있다.
ALT text detailsIU의 앨범 《LILAC》을 틀고 있다.
daisuke's avatar
daisuke

@dai@hackers.pub

@hongminhee さんに招待をいただきました。よろしくです。

geeknews_bot's avatar
geeknews_bot

@geeknews_bot@sns.lemondouble.com

하스켈과 OCaml의 모나드 접근 방식 비교
------------------------------
## Haskell의 모나드: 우아한 추상화
- 모나드는 단순히
Promise와 유사한 개념이 아닌 강력한 추상화 도구
-
Monad 타입클래스를 통해 다양한 컨텍스트(Maybe, [], IO, State)에서 코드 재사용
- 제네릭 함수(예:
sequence, mapM)가 모든 모나드에서 활용 가능
-
do 표기법으로 가독성 높은…
------------------------------
https://news.hada.io/topic?id=19664&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

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

@hongminhee@hollo.social · Reply to dai's post

@dai メールアドレスをDMで教えてください!

洪 民憙 (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의 어프로치를 比較(비교)하여 타입클래스가 어떻게 두 言語(언어)의 패턴을 다르게 만들었는지 說明(설명)을 곁들인…

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?

← Newer
Older →