関数型言語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/
探検
関数型言語ML (SML, OCaml, etc.), Part 7
■ このスレッドは過去ログ倉庫に格納されています
2017/11/01(水) 17:25:35.48ID:6Qf19YDf
2017/11/02(木) 23:10:57.91ID:Mt5L/GRL
>1おつ
2017/11/03(金) 00:13:58.21ID:x8xGydv8
Standard ML の方言 Mythril
https://mythryl.org/index3.html
Standard MLとの構文的違いの一覧表
https://mythryl.org/my-SML_vs_Mythryl_Fragment_Equivalence_Table.html
https://mythryl.org/index3.html
Standard MLとの構文的違いの一覧表
https://mythryl.org/my-SML_vs_Mythryl_Fragment_Equivalence_Table.html
2017/11/03(金) 00:17:37.47ID:sl8NUeaa
ガンダルフ?
2017/11/03(金) 20:36:09.16ID:ymVoOBdW
>>3
他はともかくunitをvoidと呼ぶのは怒る人出てくるんじゃないか
他はともかくunitをvoidと呼ぶのは怒る人出てくるんじゃないか
2017/11/19(日) 21:10:55.07ID:LFvGirUA
下らない質問なんだけど
mlで三項以上の演算子ってどうやって定義するの?
mlで三項以上の演算子ってどうやって定義するの?
2017/11/19(日) 22:20:16.29ID:FtsW9SXJ
(?) c t = if c then const t else id
(:) f x = f x
(:) f x = f x
2017/12/21(木) 03:40:36.49ID:s3fe5nPo
https://reasonml.github.io/
Facebook がこんなの作ってたんだな。
Facebook がこんなの作ってたんだな。
2017/12/23(土) 11:24:33.44ID:Z7ru8RJK
>>8
ちょっと見てみたけどOCamlとJavascript知ってれば、すぐに使えそうでいいね
ちょっと見てみたけどOCamlとJavascript知ってれば、すぐに使えそうでいいね
2017/12/28(木) 09:57:11.71ID:H09IESsG
関数型って変数が定数になっただけ?
2017/12/28(木) 17:39:41.34ID:N/80jHgY
すべてを関数と見なすだけ
定数も「定数を表す関数」と見なす
immutableかどうかは別の話
定数も「定数を表す関数」と見なす
immutableかどうかは別の話
2018/03/19(月) 08:51:02.12ID:TWWfpY71
初心者質問いいですか
ocamlコマンドでスクリプトみたいにコード走らされるけど、coreを使った途端できなくなりました。
追加でコマンドオプションが必要なのでしょうか?
ocamlコマンドでスクリプトみたいにコード走らされるけど、coreを使った途端できなくなりました。
追加でコマンドオプションが必要なのでしょうか?
2018/04/15(日) 20:58:24.01ID:mzyYtY7f
ocamlは見た目がキモいですね😱
14デフォルトの名無しさん
2018/05/23(水) 20:56:35.31ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
KDJWC
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
KDJWC
2018/06/14(木) 23:29:58.98ID:B3Vc0RRX
fableってのが面白そうだ・・・F#からJavascriptに変換してHTML5アプリとか作れるらしい
時間ができたらいじってみようかな
時間ができたらいじってみようかな
2018/06/15(金) 03:28:33.32ID:k+eJbyVg
bucklescriptでよくない?
2018/06/18(月) 09:10:34.40ID:QNagypIW
おい!あの岡部健(毛の壁)がgithubで活動を再会してるぞ!
2018/06/23(土) 03:37:58.67ID:ADF05MCP
OCamlで質問なんですが、1つのリストに対してmapしてfilterして、またmapしてみたいなことをするとき、
新しいリストがその度に、上の例で言うと3回作られるという認識であってますか?
新しいリストがその度に、上の例で言うと3回作られるという認識であってますか?
2018/06/23(土) 07:35:44.96ID:0Hl7KNt9
合ってる
それにクロージャを渡すだけでも結構コストがあるので
自分でループ書いたほうが効率がいい
それにクロージャを渡すだけでも結構コストがあるので
自分でループ書いたほうが効率がいい
2018/06/23(土) 13:51:31.94ID:ADF05MCP
やっぱりそうですか
ありがとうございます
Haskellと違い正格評価なのだから当たり前ですよね
素直にループで書きます
ありがとうございます
Haskellと違い正格評価なのだから当たり前ですよね
素直にループで書きます
2018/06/23(土) 15:36:45.70ID:YdqEOOC0
Stream使えばいいんじゃない
2018/06/23(土) 17:36:50.91ID:ADF05MCP
2018/06/23(土) 20:53:37.01ID:YdqEOOC0
Stream用のmap、filter、foldは標準では無いから、とりあえずはここのStream combinatorsからコピペして使ってね
https://ocaml.org/learn/tutorials/streams.html
https://ocaml.org/learn/tutorials/streams.html
2018/06/25(月) 08:12:48.99ID:q4Puu0mx
OCamlの関数定義で型を記述するのって、あまり良くないスタイルですか?
同じく型推論してくれるHaskellだと、型を書くのが推奨されてるみたいですが
同じく型推論してくれるHaskellだと、型を書くのが推奨されてるみたいですが
2018/06/25(月) 14:25:12.68ID:NzmJfW7/
ocamlはスタイルの良し悪しを言えるような綺麗な構文してないし
人のコード見てもまちまちなんで、好きに書けばいいよ
人のコード見てもまちまちなんで、好きに書けばいいよ
2018/07/03(火) 07:11:09.58ID:GD+nzmMH
ocamlってどうやって勉強していけばいいんだろ
参考になりそうなコードとか全然見つからないし
「プログラミング in OCaml」か「Real World Ocaml」のどっちかを読めばいいのかな
参考になりそうなコードとか全然見つからないし
「プログラミング in OCaml」か「Real World Ocaml」のどっちかを読めばいいのかな
2018/07/03(火) 07:46:19.26ID:GD+nzmMH
jane streetのcoreのList.mapってoption付きのリスト返すの?
2018/07/03(火) 20:59:55.35ID:GD+nzmMH
おっとOCamlだった😝
29デフォルトの名無しさん
2018/07/05(木) 00:57:09.40ID:RfoszcD2 NTB
2018/08/31(金) 17:17:33.76ID:9cEIfGRg
Ocamlで書いた関数はどこまで()を省略していいのか
試行錯誤な気がする。
試行錯誤な気がする。
2018/09/05(水) 19:17:32.47ID:6/0ZHi8J
省略するぐらいなら全部付けとけ
begin endも混ぜると対応のエラーチェックも期待できるぞ
begin endも混ぜると対応のエラーチェックも期待できるぞ
32デフォルトの名無しさん
2019/05/11(土) 10:46:27.70ID:uCzBZMLg Standard ML of New Jersey v110.85 での話なんですが,
exception NO_MEMBER;
fun nth n [] = raise NO_MEMBER
| nth 1 (a::_) = a
| nth n (_::b) = nth (n-1) b ;
と,リストのn番目(先頭1)を取り出す関数を作って,
val third = nth 3;
と3番目を取り出す関数を作ろうとすると,
Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
と怒られますが,なんか回避策あるんでしょうか?
当然,fun third x = nth 3 x; は大丈夫だけど,引数つけずに定義して
やりたかった.
exception NO_MEMBER;
fun nth n [] = raise NO_MEMBER
| nth 1 (a::_) = a
| nth n (_::b) = nth (n-1) b ;
と,リストのn番目(先頭1)を取り出す関数を作って,
val third = nth 3;
と3番目を取り出す関数を作ろうとすると,
Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
と怒られますが,なんか回避策あるんでしょうか?
当然,fun third x = nth 3 x; は大丈夫だけど,引数つけずに定義して
やりたかった.
2019/08/15(木) 02:29:49.06ID:km/ot4Ek
ちょいと質問
Haskelは再代入禁止と言う割にはモナドで誤魔化してる感もあるし
モナドだとボックス型のパフォーマンスが極端に悪い(が使わざるを得ない)しで
どうも好きになれなかったんだけど
そもそもあまりにも使いづらすぎる我慢大会かと
Ocamlはその辺うまく解決してるのかな?
なんか上の方見るとクロージャを展開できてないような気もして大丈夫かと思ったりもするけど
CLOSで遊ぶのとどっちがためになるかな?
ふわふわした質問でゴメン
Haskelは再代入禁止と言う割にはモナドで誤魔化してる感もあるし
モナドだとボックス型のパフォーマンスが極端に悪い(が使わざるを得ない)しで
どうも好きになれなかったんだけど
そもそもあまりにも使いづらすぎる我慢大会かと
Ocamlはその辺うまく解決してるのかな?
なんか上の方見るとクロージャを展開できてないような気もして大丈夫かと思ったりもするけど
CLOSで遊ぶのとどっちがためになるかな?
ふわふわした質問でゴメン
2019/08/15(木) 02:34:51.29ID:km/ot4Ek
そうそうCLOSだと厳密なカプセル化はされてなくて
各インスタンスの変数にダイレクトにアクセスできるかのように読めたのだけど
それが本当だとしたら非常にまずいことだけど
Ocamlだとどうなってるんだろうっていうのも気になってる
正しくないオブジェクト志向(not指向)だったらいらんよね・・
各インスタンスの変数にダイレクトにアクセスできるかのように読めたのだけど
それが本当だとしたら非常にまずいことだけど
Ocamlだとどうなってるんだろうっていうのも気になってる
正しくないオブジェクト志向(not指向)だったらいらんよね・・
2019/08/28(水) 13:00:01.20ID:Vwn2kMC/
F#スレがやられたようだな
ここでやるか?
ここでやるか?
36デフォルトの名無しさん
2019/09/01(日) 00:36:10.57ID:3Spoi/4/ >>33
副作用有ろうが無かろうが、呼ばれる関数からすればいつ、どんな値が来るか分からないと言う意味では同じなのよ。
なので、入り口だけ副作用有る関数はモナド使えば、それ以降は副作用の無い関数と同じにしようってなってる。
遅いのは認める。
関数の外から値が渡される
↓
f x = "hello" ++ x
外部入力から値が渡される
↓
readLine >>= /x -> "hello" ++ x
無限ループの発生源?を最小化して、関数化を進めやすいのは遅延評価の特徴。
import Data.List
import System
main = mapM_ put $ zip hellos marks
hellos = (cycle.tails) "Hello World!!"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
cycle xs = xs ++ mycycle xs
副作用有ろうが無かろうが、呼ばれる関数からすればいつ、どんな値が来るか分からないと言う意味では同じなのよ。
なので、入り口だけ副作用有る関数はモナド使えば、それ以降は副作用の無い関数と同じにしようってなってる。
遅いのは認める。
関数の外から値が渡される
↓
f x = "hello" ++ x
外部入力から値が渡される
↓
readLine >>= /x -> "hello" ++ x
無限ループの発生源?を最小化して、関数化を進めやすいのは遅延評価の特徴。
import Data.List
import System
main = mapM_ put $ zip hellos marks
hellos = (cycle.tails) "Hello World!!"
marks = cycle ["/","|","\\","--"]
put (x,y) = do putStrLn (x ++ "\n" ++ y)
mapM_ (\_ -> putStr "") [1..50000]
system "clear"
cycle xs = xs ++ mycycle xs
37デフォルトの名無しさん
2019/09/01(日) 00:53:30.18ID:sYwYgS29 圏論ωωω
2019/09/25(水) 02:27:32.03ID:sYvLX1uW
そのへんはどうみてもhaskellのほうが考えられてる
MLは別に力入れてない
MLは別に力入れてない
2019/09/25(水) 02:27:52.71ID:sYvLX1uW
>>34な
2019/09/25(水) 14:10:29.52ID:/4tfHXau
真のオブジェクト指向は、全てのオブジェクトが独立していてメッセージをやり取りすると言う事のみ
printと言うメッセージが飛んで来たら何かをprintすればいいだけ
ほとんどの言語はメッセージの送信は関数呼び出しになってるけど、CLOSはslot(いわゆるメンバ変数)へのアクセスも必ず関数(総称関数)呼び出しが必要で、ある意味真のオブジェクト指向と言える
そして、その関数をexportしなければslotにアクセス出来ないので、private変数の様な事はちゃんと出来る
printと言うメッセージが飛んで来たら何かをprintすればいいだけ
ほとんどの言語はメッセージの送信は関数呼び出しになってるけど、CLOSはslot(いわゆるメンバ変数)へのアクセスも必ず関数(総称関数)呼び出しが必要で、ある意味真のオブジェクト指向と言える
そして、その関数をexportしなければslotにアクセス出来ないので、private変数の様な事はちゃんと出来る
2019/10/25(金) 11:26:03.22ID:oht2SJJg
2020/03/01(日) 09:25:45.35ID:JWAFHnbA
言語仕様とか理論とかは知らんがhaskellって
mapM_ とか putStrLn とか \_ とか
なんかそういう細かいとこで見た目がイヤ
mapM_ とか putStrLn とか \_ とか
なんかそういう細かいとこで見た目がイヤ
43デフォルトの名無しさん
2020/03/01(日) 14:40:02.44ID:upDpA/6g 見た目が嫌いなら仕方ない。
私も見た目でPrologはどうしても愛せなかった。。。
私も見た目でPrologはどうしても愛せなかった。。。
44デフォルトの名無しさん
2020/03/01(日) 15:19:00.53ID:IAGr/PH/ Alpha Lab|学術巨大掲示板群
x0000.net
x0000.net
45デフォルトの名無しさん
2020/03/01(日) 15:22:58.85ID:IAGr/PH/ simulationライブラリで純粋な関数式プログラミングを
(純粋な関数式とは、状態あり変数も関数式だ)
ttp://x0000.net/topic.aspx?id=3631-0
(純粋な関数式とは、状態あり変数も関数式だ)
ttp://x0000.net/topic.aspx?id=3631-0
2020/05/03(日) 17:10:38.26ID:ioRfHtLv
関数型言語で数値計算するならOcamlかなぁ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★2 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 高市応援団の筆頭格「高市政権が誕生したのは12月1日だ!!!」 [931948549]
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 中国、南京事件に言及。さあ、ネトウヨ、もう後がないぞ [805596214]
- 【衝撃】これを折った・・・・・・・・・・・・ [793051416]
- 👊😅👊三☁😶‍🌫三⛅🏡
