◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

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


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1730427497/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2024/11/01(金) 11:18:17.62ID:MT2bV/S9
関数型言語MLについて語るスレッドです。

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

総本山
Standard ML https://www.smlnj.org/
Objective Caml https://ocaml.org/

前スレ
関数型言語ML (SML, OCaml, etc.), Part 7
http://2chb.net/r/tech/1509524735/
2デフォルトの名無しさん
2024/11/01(金) 18:37:35.02ID:nrkm3PTC
関数型言語ML (SML, OCaml, etc.), Part 6
http://mevius.2ch.net/test/read.cgi/tech/1245017721/

関数型言語ML(SML, OCaml, etc.), Part 5
http://pc12.2ch.net/test/read.cgi/tech/1186292994/

関数型言語ML(SML, OCaml, etc.), Part 4
http://pc11.2ch.net/test/read.cgi/tech/1133003340/

関数型言語ML(SML, OCaml, etc.), Part 3
http://pc8.2ch.net/test/read.cgi/tech/1103606223/

let t = 関数型プログラミング言語ML 2
http://pc5.2ch.net/test/read.cgi/tech/1058630709/

関数型プログラミング言語ML
http://pc2.2ch.net/test/read.cgi/tech/1012445015/
3デフォルトの名無しさん
2024/11/02(土) 16:39:45.15ID:Z24kzP6m
ML (programming language) 1973年に登場
https://en.wikipedia.org/wiki/ML_(programming_language)

J. Roger Hindley 1939年生まれ
https://en.wikipedia.org/wiki/J._Roger_Hindley

Robin Milner 1934年生まれ 2010年没
https://en.wikipedia.org/wiki/Robin_Milner
4デフォルトの名無しさん
2024/11/02(土) 16:54:43.41ID:Z24kzP6m
◎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

◎ラムダ関数として
val rec factorial = fn 0 => 1 | n => n * factorial (n - 1)

Standard ML
https://en.wikipedia.org/wiki/Standard_ML
5デフォルトの名無しさん
2024/11/02(土) 20:34:17.15ID:0jOsGELW
◎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

◎ラムダ関数として
let rec factorial = function 0 -> 1 | n -> n * factorial (n - 1)

◎末尾再帰
let factorial =
let rec aux acc n = if n < 1 then acc else aux (acc * n) (n - 1) in aux 1
6デフォルトの名無しさん
2024/11/17(日) 22:38:39.01ID:vlQbYPk+
◎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
factorial n = product [1..n]

◎ラムダ関数として
factorial = \n -> if n = 0 then 1 else n * factorial (n - 1)

◎末尾再帰(空白が全部1個になるので_に置き換えてます)
factorial = f 1
___where
______f a 0 = a
______f a x = f (a * x) (x - 1)
7デフォルトの名無しさん
2024/11/17(日) 23:01:25.43ID:vlQbYPk+
肝心のパターンマッチ忘れてた

factorial 0 = 1
factorial n = n * factorial (n - 1)
8デフォルトの名無しさん
2024/11/24(日) 21:33:47.09ID:7LCq6ZGA
Haskellにも一応forM/forM_ というのはあるけど、mapM/mapM_ の引数を逆にしただけ。
そして、OCaml の for版 factorial は副作用前提なので、Haskellで書くとしたらIORef使ってメモリと入出力処理をする。
(Haskellでは、メモリもファイルやIOと同じ扱い)

◎for(M)もある

import Data.IORef
import Control.Monad -- forM_ のため。mapM_ の引数を入れ替えただけなので本当は要らない子

factorial n = do x <- newIORef 1
        forM_ [1..n] (modifyIORef x.(*)) -- xに x *= 1, x *= 2 と、リストの末尾まで更新を繰り返す
        readIORef x -- x から値を取り出す
9デフォルトの名無しさん
2024/11/24(日) 21:36:31.64ID:7LCq6ZGA
全角の空白だと消えない。
コピペするときは注意だけど。

lud20250114084126
このスレへの固定リンク: http://5chb.net/r/tech/1730427497/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「関数型言語ML (SML, OCaml, etc.), Part 8 」を見た人も見ています:
【Cは】毛の壁ファンクラブ65【関数型】
C言語で関数を書いていくスレ
C言語ますたー vs ID:tmlqGhdF0 プログラミングバトル
ひろゆき「HTMLはプログラミング言語です。人間でなくコンピューターが読むためのモノなので」
【数学】f(x)=1/(xlogx) (e≦x≦e^2) の逆関数g(x)に対して、∫_{1/(2e^2),1/e} g(x)dx の値を求めよ [無断転載禁止]
プログラミング言語 Scala 12冊目
竹内道宏「当初BABYMETALを鼻で笑っていたが今は夢中。彼女達のダンスは世界共通言語。「まがい物」と言うが、大事な事は「本気」かどうかだけ」★2
【CAS/関数計算】CAS/関数電卓総合【TI/HP/CASIO】
基本情報技術者試験「C, Java, Pythonなど全部オワコン。これからは全部擬似言語で出題するからな」
関数解析
言語学史
もし言語で
言語自由詩
雑談@言語学
関数と関手の違いは?
c言語教えてくれ
D言語ってどうなの?
赤攝也『実関数論』を読む
馬鹿が話す言語
■初等関数研究村■
関数論←複素関数論、な
■初等関数研究所■
数弱だが三角関数で質問がある
Nanash【言語製作】
三角関数一日で終わらせるwww
関数解析って何がしたいの?
c言語的にjavaを教えて
関数電卓総合スレッドその9
愚民の話す言語の翻訳は難しい
C言語なら俺に聞け 157
C言語なら俺に聞け 154
面白い関数教えてください
関数電卓総合スレッドその13
三角関数と荻野暢也と藤巻健太
C言語なら俺に聞け 146
世界で共通する言語は3つ
リャプノフ関数について語ろう
大学の言語選択で悩んでるんだけど
ロジスティック関数だれか教えて
Java言語おしえて
C言語なら俺に聞け 147
C言語なら俺に聞け 153
【悲報】言語オタク、一般人を煽る
三角比と三角関数と統計的有意差
★★陰関数の定理の証明が・・・★★
作業列や配列数式やマクロを使わずに関数組んでやる
人工言語インターリングア
質問スレッド in 言語板
言語によらない数学伝達法
言語別に見た造語力と語彙数
高校2年 進研模試 11月 三角関数
楕円関数・テータ関数・モジュラー関数
関東弁は土人の言語 [無断転載禁止]
【関数】数学得意な奴ちょっと来てくれ【曲線】
この板、言語学ってより語学やん
測度って、集合上の関数なの?関数上の関数なの?
スクリプト言語について語ろう
発達障害ワイ、言語理解が低すぎる
ソローモデル コブダグラス型生産関数
関東弁はバカの言語 [無断転載禁止]
大学数学の到達目標は、リーマン幾何学と関数解析
Rustとか言うダブスタ言語
ベトナム語、欠陥言語だった
超回帰の言語学&あれこれメモ 2
物理学3大謎の存在「ラグランジアン」「分配関数」
言語とIQの関係性 [無断転載禁止]
08:32:59 up 63 days, 9:31, 0 users, load average: 7.69, 7.61, 7.36

in 1.5669808387756 sec @1.5669808387756@0b7 on 061921