《プログラミングの基礎》はとても良い本です。
サンプルプログラムをReScriptで書いて、プログラミングの基礎とReScriptを学びます。
ReScriptはmacOS Sonoma(バージョン 14.4.1)で動かしています。
第二章
ocaml
"新" ^ "横浜" ^ "駅"
Rescript
"新" ++ "横浜" ++ "駅"
stringの連結子は++
です。
第三章
特になし
第四章
ocaml
let f x = 3 * x
ReScript
let f = (x) => {3 * x}
関数はlet 関数名 = (引数) => {本体}
と書きます。
Ex04_1.res
let jikyu = 850
let baito_kyuyo = (year, month) => {
month * (jikyu + year * 100)
}
Console.log(baito_kyuyo(1, 10))
Ex04_2.res
let jikoshokai = (namae) => {
"私の名前は" ++ namae ++ "です。よろしくお願いします。"
}
Console.log(jikoshokai("戯画蛙"))
Ex04_3.res
let hyojun_taiju = (shincho) => {
shincho *. shincho *. 22.0
}
Console.log(hyojun_taiju(1.75))
Ex04_4.res
let bmi = (shincho, taiju) => {
taiju /. (shincho *. shincho)
}
Console.log(bmi(1.75, 75.))
Ex04_6.res
// 目的:鶴の数 tsuru を受け取ったら足の本数を返す
// tsuru_no_ashi : int -> int
let tsuru_no_ashi = (tsuru) => tsuru * 2
// テスト
Console.log(tsuru_no_ashi(0) == 0)
Console.log(tsuru_no_ashi(1) == 2)
Console.log(tsuru_no_ashi(7) == 14)
Ex04_7.res
// 目的:鶴の数と亀の数を受け取ったら足の本数を返す
// tsurukame_no_ashi : int -> int -> int
let tsurukame_no_ashi = (tsuru, kame) => tsuru * 2 + kame * 4
// テスト
Console.log(tsurukame_no_ashi(0, 0) == 0)
Console.log(tsurukame_no_ashi(1, 1) == 6)
Console.log(tsurukame_no_ashi(2, 3) == 16)
Ex04_8.res
// 目的:鶴と亀の数の合計と足の数の合計を受け取ったら鶴の数を返す
// tsurukame : int -> int -> int
let tsurukame = (gokei, ashi) => (gokei * 4 - ashi) / 2
// テスト
Console.log(tsurukame(0, 0) == 0)
Console.log(tsurukame(5, 12) == 4)
Console.log(tsurukame(12, 34) == 7)