関数型言語ML (SML, OCaml, etc.), Part 7

■ このスレッドは過去ログ倉庫に格納されています
2017/11/01(水) 17:25:35.48ID:6Qf19YDf
関数型言語MLについて語るスレッドです。

MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。

総本山
Standard ML http://www.smlnj.org/
Objective Caml http://caml.inria.fr/ocaml/

前スレ
関数型言語ML (SML, OCaml, etc.), Part 6
http://mevius.2ch.net/test/read.cgi/tech/1245017721/
2021/01/12(火) 18:37:52.42ID:6w9txZHV
ocamlは;がキモくなければHaskellの代わりにバズれたと思う
2021/01/15(金) 02:58:21.61ID:Hai3vgIl
>>46
速くて有名な数値計算ライブラリは大体fortran、次いでocaml(cトランスパイラ)製だし(fftwとか
c直書きで最適なコード書くのなんて人間には不可能なんだろう
2021/01/15(金) 21:45:59.26ID:lcwEKr0P
そもそもHaskellはバズっているのか?
実用性に乏しいけど、見下したい人が我慢して使ってる印象
2021/01/27(水) 11:13:03.05ID:bXbG36lK
Haskell 何年か前には確かにバズってた、
みんなモナドについて熱く語ってた(個人の感想)

今はあんまり聞かなくて寂しい…
2021/02/18(木) 08:08:11.33ID:2agUMJ25
型指向プログラミング入門にはHaskellは良いと思うよ
代数はあんまり好きじゃない、というか役に立つかよく分からんのでそっちじゃないだろ感はあったけど
広く括ればML系列なんでにわか人気でも悪い気はしないが
2021/02/18(木) 08:31:52.28ID:2agUMJ25
>>34
いまさらのレス感あるが、たまたま目についたので…
lisp族は関数型オブジェクト指向GC継続AI論理型パターンマッチ等々、おおよその概念の走りというだけ
というかこれだけ挙がるということ即ち無節操
形から入るには全く向いていない

CLOS/MOPは未だに最も強力なシステムだと思うけど、既に確立されてる型/OOP理論とは相反するところがあるし、むしろブチ壊す側
ML系のガチガチ制約を矯正ギプスとしてベストプラクティス&洞察力を養いたいという目的には向いてない
2021/02/18(木) 08:37:50.68ID:2agUMJ25
まあ向上心があるのならlispインタプリタ書くチュートリアルは一度やっておくべきだと思う
MLお家芸のパーサ書きにも資する
2021/02/18(木) 23:46:57.08ID:vv37pWaX
CLはもう極端な動的さ以外に特色はないんじゃないか?
2021/02/19(金) 04:14:17.89ID:MujNk0Cy
まあそうだね、schemeは縛りがキツイからアナーキーにやりたいならclって感じ
あとOOP使わず型(最適化ディレクティブとしての型)付ければCと同等のベンチ叩き出すとか
2021/02/19(金) 04:35:24.37ID:MujNk0Cy
標準文法は決まってるけど、lexerとparserを弄る&乗取る組み込み関数が提供されてて規格より優先順位高いからから、例えcやsqlのコードでも規格準拠のと言い張れたりする

そこまでするなら普通にlexer/perser書いて…言語処理系書けよって話だけど
一部lispで直感的に書きにくいとか、そういう時に/regex/とか{key: val}とか[start:stop:step]のような、モダンっぽいリテラルを簡単に定義できるのは便利
2021/03/08(月) 15:26:00.22ID:H4OoIpXQ
一文字読む毎にその文字に対応する関数呼び出して全権移譲してるんだよな…
さすがにコンパイル時にはユーザー定義で上書きした文字以外はヒューリスティックだろうけど
楽しそうではあるけど言語自体を拡張するよりML式に代数的データ型とパターンマッチでDSL書いた方が早い
2021/03/08(月) 15:52:44.32ID:H4OoIpXQ
ちょっと調べたら組み込み関数で先読みは一文字まで?
(set-macro-character #\[ (get-macro-character #\( ))
で[角張った りすぷ)
;; #\(に標準で割り当てられてるマクロ関数が探す終端文字はもちろん#\)
;;なので手抜きだとこうなる
(set-macro-character #\# 改行文字までread-char読み捨て)
# シバンとして読めるコメント文字を定義すると便利そう?

set-dispatch-macro-...で一文字目の文脈で二文字目を解釈
だとしたらcライク構文をlispコードとしてパース/評価までやるのは結構大変なんじゃ
もちろんread-charじゃなく単語単位のトークン分割(標準文法のread関数)、先読みはpeek-char関数を使うとか
バックトラックは評価器に渡す前にバッファに溜め込んでおくとか考えられるが

あんまり詳しくないんで違ってたらすまん
59デフォルトの名無しさん
垢版 |
2022/01/12(水) 10:26:17.27ID:ZZU00ODL
Twitterの検索で

@ohagiya @kenokabe UCLA

と入れると楽しいよな
2022/11/26(土) 20:46:31.99ID:9B2aEYlu
プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜

プログラミングの基礎 (Computer Science Library)

コンピュータを操る: プログラミングを通して「情報科学的なものの考え方」を学ぶ (Computer and Web Sciences Library)
いずれかあるいはいくつか読んだことがある方、感想を教えていただけませんでしょうか。
関数型プログラミングにひたったことはないけれど若干知っている、程度なのですが今後のプログラミングや文章を書くときの指針にこの辺りが役立ちそうに思っています。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況