Last active
August 29, 2015 14:08
-
-
Save sugitach/ca3da314af547cf0caf6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(* 学生一人分のデータ *) | |
type gakusei_t = {name: string; tensuu: int; seiseki: string} | |
(*学生データのリスト*) | |
let gakusei1 = { name = "asai"; tensuu = 70; seiseki = "B"; } | |
let gakusei2 = { name = "kaneko"; tensuu = 85; seiseki = "A"; } | |
let gakusei3 = { name = "yoshida"; tensuu = 80; seiseki = "A"; } | |
let gakusei4 = { name = "x-asai"; tensuu = 70; seiseki = "B"; } | |
let gakusei5 = { name = "x-kaneko"; tensuu = 85; seiseki = "A"; } | |
let gakusei6 = { name = "x-yoshida"; tensuu = 80; seiseki = "A"; } | |
let lst1 = [] | |
let lst2 = [gakusei1] | |
let lst3 = [gakusei1; gakusei2] | |
let lst4 = [gakusei3; gakusei1; gakusei2] | |
let lst5 = [gakusei3; gakusei1; gakusei2; gakusei4; gakusei5; gakusei6] | |
(* gakuse_t型のリストから、最高得点の人のレコードを返す *) | |
(* gakusei_max : gakusei_t list -> gakusei_t *) | |
let rec gakusei_max lst = match lst with | |
[] -> { name = "void"; tensuu = 0; seiseki = "0"; } | |
| first :: rest -> if (first.tensuu > (gakusei_max rest).tensuu) | |
then first | |
else gakusei_max rest | |
let t1 = (gakusei_max lst1).name = "void" | |
let t2 = (gakusei_max lst2).name = "asai" | |
let t3 = (gakusei_max lst3).name = "kaneko" | |
let t4 = (gakusei_max lst4).name = "kaneko" | |
(* gakuse_t型のリストから、最高得点の人のレコードのリストを返す *) | |
(* gakusei_max : gakusei_t list -> gakusei_t lst*) | |
let rec gakusei_max_list all lst = match lst with | |
[] -> [] | |
| first :: rest -> if (first.tensuu = (gakusei_max all).tensuu) | |
then first::(gakusei_max_list all rest) | |
else gakusei_max_list all rest | |
(* test *) | |
let tx = gakusei_max_list lst5 lst5 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment