関数型言語ML (SML, OCaml, etc.), Part 8 (17レス)
1-

1: 2024/11/01(金)11:18 ID:MT2bV/S9(1) AAS
関数型言語MLについて語るスレッドです。

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

総本山
Standard ML 外部リンク:www.smlnj.org
Objective Caml 外部リンク:ocaml.org

前スレ
関数型言語ML (SML, OCaml, etc.), Part 7
2chスレ:tech
2: 2024/11/01(金)18:37 ID:nrkm3PTC(1) AAS
関数型言語ML (SML, OCaml, etc.), Part 6
2chスレ:tech

関数型言語ML(SML, OCaml, etc.), Part 5
2chスレ:tech

関数型言語ML(SML, OCaml, etc.), Part 4
2chスレ:tech

関数型言語ML(SML, OCaml, etc.), Part 3
2chスレ:tech

let t = 関数型プログラミング言語ML 2
2chスレ:tech
省2
3: 2024/11/02(土)16:39 ID:Z24kzP6m(1/2) AAS
ML (programming language) 1973年に登場
外部リンク:en.wikipedia.org

J. Roger Hindley 1939年生まれ
外部リンク:en.wikipedia.org

Robin Milner 1934年生まれ 2010年没
外部リンク:en.wikipedia.org
4: 2024/11/02(土)16:54 ID:Z24kzP6m(2/2) AAS
◎SMLで関数の定義いろいろ
fun factorial n =
if n = 0 then 1 else n * factorial (n - 1)

◎clausal function definitions
fun factorial 0 = 1
| factorial n = n * factorial (n - 1)

◎whileもある
fun factorial n = let val i = ref n and acc = ref 1 in
while !i > 0 do (acc := !acc * !i; i := !i - 1); !acc
end
省4
5: 2024/11/02(土)20:34 ID:0jOsGELW(1) AAS
◎OCamlで関数の定義いろいろ
let rec factorial n =
if n = 0 then 1 else n * factorial (n - 1)

◎whileもある
let factorial n = let i = ref n and acc = ref 1 in
while !i > 0 do acc := !acc * !i; i := !i - 1; done; !acc

◎forもある
let factorial n = let acc = ref 1 in
for i = 1 to n do acc := !acc * i done; !acc

◎ラムダ関数として
省4
6: 2024/11/17(日)22:38 ID:vlQbYPk+(1/2) AAS
◎Haskellで関数の定義いろいろ
factorial n =
 if n = 0 then 1 else n * factorial (n - 1)

◎ガード
factorial n
| n == 0 = 1
| otherwise = n * factorial (n - 1)

◎foldl
factorial n = foldl (*) 1 [1..n]

◎product = foldl (*) 1
省8
7: 2024/11/17(日)23:01 ID:vlQbYPk+(2/2) AAS
肝心のパターンマッチ忘れてた

factorial 0 = 1
factorial n = n * factorial (n - 1)
8: 2024/11/24(日)21:33 ID:7LCq6ZGA(1/2) AAS
AA省
9: 2024/11/24(日)21:36 ID:7LCq6ZGA(2/2) AAS
全角の空白だと消えない。
コピペするときは注意だけど。
10
(1): 02/08(土)15:58 ID:+2jmv8fY(1) AAS
どうせ今はJavaだろうがPHPだろうが関数型の機能あるんでしょ?結局はJavaでいいじゃん
11
(1): 02/09(日)04:00 ID:8d730QrP(1) AAS
パターンマッチ渡しがないから
Maybe monadとか使うのが非常に面倒
12
(1): 02/09(日)15:52 ID:nVH+xYHa(1) AAS
末尾再帰最適化の保証がないと関数型スタイルにはできん
13: 02/10(月)22:59 ID:o2Gr18iQ(1) AAS
Maybeはネーミングが悪いよな
今ではほとんどの言語でOptionだろ
14: 02/11(火)02:42 ID:iiJDGlnL(1) AAS
Schemeが手続き型作法で書けて
>>11>>12もクリアしてるけど人気なくなったよな
15: 03/11(火)19:24 ID:O+8SFaAq(1/2) AAS
括弧あるからね
16: 03/11(火)19:25 ID:O+8SFaAq(2/2) AAS
HaskellやOCamlだってそこまで人気じゃないし
17: 08/04(月)23:10 ID:V0OTCQ/u(1) AAS
>>10
うーむ、そもそもHaskellを離れられないのはiHaskell触ってからf-elseやswitch-case文を書くのがマンドクセ((+_+))
ってなったのと、Haskellは(+)などのセクションと部分適用で巧みにラムダ式を使わないで済むのが楽なんだよね。
あと、関数に括弧が要らないのも部分適用と合わせて楽すぎる。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.278s*