[表示 : 全て 最新50 1-99 2ch.scのread.cgiへ]
Update time : 08/30 04:31 / Filesize : 17 KB / Number-of Response : 66
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 17:25:35.48 ID:6Qf19YDf.net]
関数型言語MLについて語るスレッドです。

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

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

前スレ
関数型言語ML (SML, OCaml, etc.), Part 6
mevius.2ch.net/test/read.cgi/tech/1245017721/

3 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:13:58.21 ID:x8xGydv8.net]
Standard ML の方言 Mythril
https://mythryl.org/index3.html

Standard MLとの構文的違いの一覧表
https://mythryl.org/my-SML_vs_Mythryl_Fragment_Equivalence_Table.html

4 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 00:17:37.47 ID:sl8NUeaa.net]
ガンダルフ?

5 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 20:36:09.16 ID:ymVoOBdW.net]
>>3
他はともかくunitをvoidと呼ぶのは怒る人出てくるんじゃないか

6 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 21:10:55.07 ID:LFvGirUA.net]
下らない質問なんだけど
mlで三項以上の演算子ってどうやって定義するの?

7 名前:デフォルトの名無しさん mailto:sage [2017/11/19(日) 22:20:16.29 ID:FtsW9SXJ.net]
(?) c t = if c then const t else id
(:) f x = f x

8 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 03:40:36.49 ID:s3fe5nPo.net]
https://reasonml.github.io/
Facebook がこんなの作ってたんだな。

9 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 11:24:33.44 ID:Z7ru8RJK.net]
>>8
ちょっと見てみたけどOCamlとJavascript知ってれば、すぐに使えそうでいいね

10 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 09:57:11.71 ID:H09IESsG.net]
関数型って変数が定数になっただけ?

11 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 17:39:41.34 ID:N/80jHgY.net]
すべてを関数と見なすだけ
定数も「定数を表す関数」と見なす
immutableかどうかは別の話



12 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 08:51:02.12 ID:TWWfpY71.net]
初心者質問いいですか
ocamlコマンドでスクリプトみたいにコード走らされるけど、coreを使った途端できなくなりました。
追加でコマンドオプションが必要なのでしょうか?

13 名前:デフォルトの名無しさん mailto:sage [2018/04/15(日) 20:58:24.01 ID:mzyYtY7f.net]
ocamlは見た目がキモいですね😱

14 名前:デフォルトの名無しさん [2018/05/23(水) 20:56:35.31 ID:Au5e7VGg.net]
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

KDJWC

15 名前:デフォルトの名無しさん mailto:sage [2018/06/14(木) 23:29:58.98 ID:B3Vc0RRX.net]
fableってのが面白そうだ・・・F#からJavascriptに変換してHTML5アプリとか作れるらしい
時間ができたらいじってみようかな

16 名前:デフォルトの名無しさん mailto:sage [2018/06/15(金) 03:28:33.32 ID:k+eJbyVg.net]
bucklescriptでよくない?

17 名前:デフォルトの名無しさん mailto:sage [2018/06/18(月) 09:10:34.40 ID:QNagypIW.net]
おい!あの岡部健(毛の壁)がgithubで活動を再会してるぞ!

18 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 03:37:58.67 ID:ADF05MCP.net]
OCamlで質問なんですが、1つのリストに対してmapしてfilterして、またmapしてみたいなことをするとき、
新しいリストがその度に、上の例で言うと3回作られるという認識であってますか?

19 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 07:35:44.96 ID:0Hl7KNt9.net]
合ってる
それにクロージャを渡すだけでも結構コストがあるので
自分でループ書いたほうが効率がいい

20 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 13:51:31.94 ID:ADF05MCP.net]
やっぱりそうですか
ありがとうございます
Haskellと違い正格評価なのだから当たり前ですよね
素直にループで書きます

21 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 15:36:45.70 ID:YdqEOOC0.net]
Stream使えばいいんじゃない



22 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 17:36:50.91 ID:ADF05MCP.net]
>>21
ありがとうございます
調べてみます
関数型はHaskellから入ってml系は知らないので、ちょっとずつ慣れていきます

23 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 20:53:37.01 ID:YdqEOOC0.net]
Stream用のmap、filter、foldは標準では無いから、とりあえずはここのStream combinatorsからコピペして使ってね
https://ocaml.org/learn/tutorials/streams.html

24 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 08:12:48.99 ID:q4Puu0mx.net]
OCamlの関数定義で型を記述するのって、あまり良くないスタイルですか?
同じく型推論してくれるHaskellだと、型を書くのが推奨されてるみたいですが

25 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 14:25:12.68 ID:NzmJfW7/.net]
ocamlはスタイルの良し悪しを言えるような綺麗な構文してないし
人のコード見てもまちまちなんで、好きに書けばいいよ

26 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 07:11:09.58 ID:GD+nzmMH.net]
ocamlってどうやって勉強していけばいいんだろ
参考になりそうなコードとか全然見つからないし
「プログラミング in OCaml」か「Real World Ocaml」のどっちかを読めばいいのかな

27 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 07:46:19.26 ID:GD+nzmMH.net]
jane streetのcoreのList.mapってoption付きのリスト返すの?

28 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:59:55.35 ID:GD+nzmMH.net]
おっとOCamlだった😝

29 名前:デフォルトの名無しさん [2018/07/05(木) 00:57:09.40 ID:RfoszcD2.net]
NTB

30 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 20:33:51.35 ID:TjjxpHXro]
Ocamlでレコードを定義した後、フィールド名の一覧を表示させる方法はありますか?
例えば「type gakusei_t {namae : string ; tensuu : int ; seiseki : string; }」というレコードを作成した後で、gakusei_tが持つフィールド名の一覧を表示させるための構文とか関数がOCamlで用意されているのでしょうか?

31 名前:30 mailto:sage [2018/08/25(土) 10:27:32.48 ID:A4JTLwzFR]
>>30 で例文が間違えてましたorz(=が抜けてた。)
OCamlで「type gakusei_t = {namae : string ; tensuu : int ; seiseki : string; }」というレコードを作った場合でした。
このレコードgakusei_tのキーの一覧(namae, tensuu, seiseki)を取得する方法、関数などが用意されているのでしょうか?
PHPで言えば連想配列のキーの一覧を取得する関数「array_keys()」に相当する機能です。
php.net/manual/ja/function.array-keys.php



32 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 17:17:33.76 ID:9cEIfGRg.net]
Ocamlで書いた関数はどこまで()を省略していいのか
試行錯誤な気がする。

33 名前:デフォルトの名無しさん mailto:sage [2018/09/05(水) 19:17:32.47 ID:6/0ZHi8J.net]
省略するぐらいなら全部付けとけ
begin endも混ぜると対応のエラーチェックも期待できるぞ

34 名前:デフォルトの名無しさん [2019/05/11(土) 10:46:27.70 ID:uCzBZMLg.net]
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; は大丈夫だけど,引数つけずに定義して
やりたかった.

35 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 02:29:49.06 ID:km/ot4Ek.net]
ちょいと質問
Haskelは再代入禁止と言う割にはモナドで誤魔化してる感もあるし
モナドだとボックス型のパフォーマンスが極端に悪い(が使わざるを得ない)しで
どうも好きになれなかったんだけど
そもそもあまりにも使いづらすぎる我慢大会かと

Ocamlはその辺うまく解決してるのかな?
なんか上の方見るとクロージャを展開できてないような気もして大丈夫かと思ったりもするけど
CLOSで遊ぶのとどっちがためになるかな?

ふわふわした質問でゴメン

36 名前:デフォルトの名無しさん mailto:sage [2019/08/15(木) 02:34:51.29 ID:km/ot4Ek.net]
そうそうCLOSだと厳密なカプセル化はされてなくて
各インスタンスの変数にダイレクトにアクセスできるかのように読めたのだけど
それが本当だとしたら非常にまずいことだけど
Ocamlだとどうなってるんだろうっていうのも気になってる

正しくないオブジェクト志向(not指向)だったらいらんよね・・

37 名前:デフォルトの名無しさん mailto:sage [2019/08/28(水) 13:00:01.20 ID:Vwn2kMC/.net]
F#スレがやられたようだな
ここでやるか?

38 名前:デフォルトの名無しさん [2019/09/01(日) 00:36:10.57 ID:3Spoi/4/.net]
>>35
副作用有ろうが無かろうが、呼ばれる関数からすればいつ、どんな値が来るか分からないと言う意味では同じなのよ。
なので、入り口だけ副作用有る関数はモナド使えば、それ以降は副作用の無い関数と同じにしようってなってる。
遅いのは認める。

関数の外から値が渡される

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

39 名前:デフォルトの名無しさん [2019/09/01(日) 00:53:30.18 ID:sYwYgS29.net]
圏論ωωω

40 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 02:27:32.03 ID:sYvLX1uW.net]
そのへんはどうみてもhaskellのほうが考えられてる
MLは別に力入れてない

41 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 02:27:52.71 ID:sYvLX1uW.net]
>>36



42 名前:デフォルトの名無しさん mailto:sage [2019/09/25(水) 14:10:29.52 ID:/4tfHXau.net]
真のオブジェクト指向は、全てのオブジェクトが独立していてメッセージをやり取りすると言う事のみ
printと言うメッセージが飛んで来たら何かをprintすればいいだけ
ほとんどの言語はメッセージの送信は関数呼び出しになってるけど、CLOSはslot(いわゆるメンバ変数)へのアクセスも必ず関数(総称関数)呼び出しが必要で、ある意味真のオブジェクト指向と言える
そして、その関数をexportしなければslotにアクセス出来ないので、private変数の様な事はちゃんと出来る

43 名前:デフォルトの名無しさん mailto:sage [2019/10/25(金) 11:26:03.22 ID:oht2SJJg.net]
久々にReal World OCamlのサイトみたら2nd Edition準備中なんだ。
https://realworldocaml.org/

サイトがめちゃくちゃ見やすくなってて良い感じ。

44 名前:デフォルトの名無しさん mailto:sage [2020/03/01(日) 09:25:45.35 ID:JWAFHnbA.net]
言語仕様とか理論とかは知らんがhaskellって
mapM_ とか putStrLn とか \_ とか
なんかそういう細かいとこで見た目がイヤ

45 名前:デフォルトの名無しさん [2020/03/01(日) 14:40:02 ID:upDpA/6g.net]
見た目が嫌いなら仕方ない。
私も見た目でPrologはどうしても愛せなかった。。。

46 名前:デフォルトの名無しさん [2020/03/01(日) 15:19:00 ID:IAGr/PH/.net]
Alpha Lab|学術巨大掲示板群
x0000.net

47 名前:デフォルトの名無しさん [2020/03/01(日) 15:22:58 ID:IAGr/PH/.net]
simulationライブラリで純粋な関数式プログラミングを
(純粋な関数式とは、状態あり変数も関数式だ)
ttp://x0000.net/topic.aspx?id=3631-0

48 名前:デフォルトの名無しさん mailto:sage [2020/05/03(日) 17:10:38.26 ID:ioRfHtLv.net]
関数型言語で数値計算するならOcamlかなぁ?

49 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 18:37:52.42 ID:6w9txZHV.net]
ocamlは;がキモくなければHaskellの代わりにバズれたと思う

50 名前:デフォルトの名無しさん mailto:sage [2021/01/15(金) 02:58:21.61 ID:Hai3vgIl.net]
>>48
速くて有名な数値計算ライブラリは大体fortran、次いでocaml(cトランスパイラ)製だし(fftwとか
c直書きで最適なコード書くのなんて人間には不可能なんだろう

51 名前:デフォルトの名無しさん mailto:sage [2021/01/15(金) 21:45:59.26 ID:lcwEKr0P.net]
そもそもHaskellはバズっているのか?
実用性に乏しいけど、見下したい人が我慢して使ってる印象



52 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 11:13:03.05 ID:bXbG36lK.net]
Haskell 何年か前には確かにバズってた、
みんなモナドについて熱く語ってた(個人の感想)

今はあんまり聞かなくて寂しい…

53 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 08:08:11.33 ID:2agUMJ25.net]
型指向プログラミング入門にはHaskellは良いと思うよ
代数はあんまり好きじゃない、というか役に立つかよく分からんのでそっちじゃないだろ感はあったけど
広く括ればML系列なんでにわか人気でも悪い気はしないが

54 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 08:31:52.28 ID:2agUMJ25.net]
>>36
いまさらのレス感あるが、たまたま目についたので…
lisp族は関数型オブジェクト指向GC継続AI論理型パターンマッチ等々、おおよその概念の走りというだけ
というかこれだけ挙がるということ即ち無節操
形から入るには全く向いていない

CLOS/MOPは未だに最も強力なシステムだと思うけど、既に確立されてる型/OOP理論とは相反するところがあるし、むしろブチ壊す側
ML系のガチガチ制約を矯正ギプスとしてベストプラクティス&洞察力を養いたいという目的には向いてない

55 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 08:37:50.68 ID:2agUMJ25.net]
まあ向上心があるのならlispインタプリタ書くチュートリアルは一度やっておくべきだと思う
MLお家芸のパーサ書きにも資する

56 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 23:46:57.08 ID:vv37pWaX.net]
CLはもう極端な動的さ以外に特色はないんじゃないか?

57 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 04:14:17.89 ID:MujNk0Cy.net]
まあそうだね、schemeは縛りがキツイからアナーキーにやりたいならclって感じ
あとOOP使わず型(最適化ディレクティブとしての型)付ければCと同等のベンチ叩き出すとか

58 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 04:35:24.37 ID:MujNk0Cy.net]
標準文法は決まってるけど、lexerとparserを弄る&乗取る組み込み関数が提供されてて規格より優先順位高いからから、例えcやsqlのコードでも規格準拠のと言い張れたりする

そこまでするなら普通にlexer/perser書いて…言語処理系書けよって話だけど
一部lispで直感的に書きにくいとか、そういう時に/regex/とか{key: val}とか[start:stop:step]のような、モダンっぽいリテラルを簡単に定義できるのは便利

59 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 15:26:00.22 ID:H4OoIpXQ.net]
一文字読む毎にその文字に対応する関数呼び出して全権移譲してるんだよな…
さすがにコンパイル時にはユーザー定義で上書きした文字以外はヒューリスティックだろうけど
楽しそうではあるけど言語自体を拡張するよりML式に代数的データ型とパターンマッチでDSL書いた方が早い

60 名前:デフォルトの名無しさん mailto:sage [2021/03/08(月) 15:52:44.32 ID:H4OoIpXQ.net]
ちょっと調べたら組み込み関数で先読みは一文字まで?
(set-macro-character #\[ (get-macro-character #\( ))
で[角張った りすぷ)
;; #\(に標準で割り当てられてるマクロ関数が探す終端文字はもちろん#\)
;;なので手抜きだとこうなる
(set-macro-character #\# 改行文字までread-char読み捨て)
# シバンとして読めるコメント文字を定義すると便利そう?

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

あんまり詳しくないんで違ってたらすまん

61 名前:デフォルトの名無しさん [2021/04/01(木) 22:53:33.90 ID:3PJTysR/r]
リクルートグループ、週休「約3日」に。4月から年間休日を145日に増加へ
https://www.businessinsider.jp/post-231540
リクルートの”週休約3日”に「うらやましい」「一般化して」などの声 年間休日145日でも給与は変わらず
https://news.careerconnection.jp/?p=113498
リクルート、4月から週休約3日に‐理由を問わないリモートワークも全社に導入
https://news.mynavi.jp/article/20210318-1814293/
驚異のテレワーク率「9割超」 営業利益16倍の企業は、生産性が「下がった」社員をどのようにケアしたのか
https://www.itmedia.co.jp/business/articles/2102/04/news010.html
週休3日で700社以上の働き方改革を支援し、年収3倍となった
「Caster Anywhere」事業責任者 越川慎司の新刊が1月28日発売
https://prtimes.jp/main/html/rd/p/000000131.000012003.html
週休3日なのに年収を3倍にした男性の「時短術」
https://news.yahoo.co.jp/articles/090b7e720c2e8c6fb0d524b67a40182f70d8fdf2
“週休3日制”導入で売上4割増の例も…日本企業で普及期に、週30時間が常識に
https://biz-journal.jp/2020/01/post_138414.html
「 リモートワークで手放すべき7つのこと」働き方改革の先の世界
https://tebanasu-lab.com/interview/9828/
日本初「週休4日制度」で、優秀な人材を採用するしくみとは? ?ナレッジソサエティ久田社長に聞



62 名前:いてみた
https://web.all-in.xyz/upgrade/knowledgesociety-2/
[]
[ここ壊れてます]

63 名前:デフォルトの名無しさん [2022/01/12(水) 10:26:17.27 ID:ZZU00ODL.net]
Twitterの検索で

@ohagiya @kenokabe UCLA

と入れると楽しいよな

64 名前:デフォルトの名無しさん mailto:sage [2022/11/26(土) 20:46:31.99 ID:9B2aEYlu.net]
プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜

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

コンピュータを操る: プログラミングを通して「情報科学的なものの考え方」を学ぶ (Computer and Web Sciences Library)
いずれかあるいはいくつか読んだことがある方、感想を教えていただけませんでしょうか。
関数型プログラミングにひたったことはないけれど若干知っている、程度なのですが今後のプログラミングや文章を書くときの指針にこの辺りが役立ちそうに思っています。

65 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<17KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef