haskell-jp / questions #102 at 2023-01-06 21:08:50 +0900

LispやMLには方言がありますが、Haskellにはないのって、単にコンパイラが複雑になったからなのでしょうか?
モジュールや型などに関する関数型言語の実装一般に関する議論って、MLでは論文も多いですが、Haskellでは結構乏しい気がします
ここらへんの歴史的背景とか、最近の言語研究者の事情とかを知りたいです。
GHC 以外の処理系は2006年ごろだと Hugs が普通に選択肢として挙がってたみたいですね
(自分は2011年ごろ移行しか知らない
https://xtech.nikkei.com/it/article/COLUMN/20060801/244812/
lispの方言はelisp, common lisp, schemeとかですかね。
これくらい違うのでいいなら、
haskellの方言として、purescript, elmとかいろいろあると思います。
https://m.youtube.com/watch?v=832JF1o7Ck8
今はこれが気になっています。
少し前はFayとかHasteみたいなJavaScript用のほぼHaskellのサブセットがありましたね
今はGHCが公式でJSやWASMを吐き出すのでそちらの方が良さそうですが…
後はJHCとかの処理系もありますが、開発続いてるんでしょうか
GHCで書くこと自体が拡張機能をたくさん使ってるので方言と言えるかもしれません
それで言うとEtaとかFregeも方言ですかね

かなり離れてるOCamlやSMLをML方言として捉えて良いなら、純粋関数型言語は全てHaskellの方言かもしれません(過言)
Nobuyuki Tomizawa
単なるご参考:
挙がっていないもので、方言っぽいので、ぽくないのでとかもありますかね。

Hugsの前身の gofer はちょっとだけ使ったりソース読んだりしていました。

Wikipediaのページには、ghc以外の処理系・方言?がいくつか挙がっていました。

(研究(の多少)に関してはよくわからないのですが、なんとなくMLのほうが論文少ないきがしていました。)
皆さんありがとうございます。Haskellの処理系がいくつもあったことは初めて知りました。
純粋関数型言語は全てHaskellの方言
確かに純粋と謳っている関数型言語のシンタックスは大体Haskellのような見た目をしていますね。
purescriptやelmもあまり良く知らないのですが、Haskellの方言と言っていいくらいの類似度なんですかね。

MLよりHaskellの方が論文が少ないというのは、どこを見るかにもよるかもしれないのですが、少なくとも私はHaskellのような言語を自作する上で、MLを対象とした論文はよく見るのですが、Haskellの実装に対してはあまり見かけませんでした。

確かに製品レベルのコンパイラではHaskellに類似したものも多いのですが、Haskellコンパイラを自作する例は、MLのそれ(住井先生のMinCamlや東北大学のSML#など)に比べて少ないような気がします。どうでしょうか?
まあやっぱり、コンパイラを軽く自作する例が少ないのは最初にご指摘された通り複雑だからなのではないでしょうか
遅延評価と型クラスだけでもかなり大変そうです
内部のSTG形式とかフルスクラッチしたくない…
なのでHaskellベースの学術的な試み、例えばLiquidHaskellとかやるにしてもGHC前提で行いたい気がします
どうせ世の中のライブラリはGHC拡張使いまくりなので実用性を少しでも考えるならGHC前提にしたいですし

SchemeとCommon LispなどをLisp方言としてまとめて良いならPureScriptもHaskell方言で良い気もしますが
後は、型クラスとかTemplate Haskellなどの自由度によってライブラリとして研究したいことが実現可能なことが多いのでわざわざ処理系から自作しなくて良いとかもあるのかもしれません
最近はGHCにもプラグイン機構がありますし
例えばSML#のSQL式機構とかは、Esqueletoはライブラリとして少し似たような感じで行っています
XML式を導入したいとかでも準クオートで対応可能ですし
なるほど。まだHaskellも使いこなせていない部分が多くあることを感じさせられました。ありがとうございます