Skip to content

Instantly share code, notes, and snippets.

@akimacho
Created March 3, 2015 07:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save akimacho/72c7f0a6f2fda9f55740 to your computer and use it in GitHub Desktop.
Save akimacho/72c7f0a6f2fda9f55740 to your computer and use it in GitHub Desktop.
第8章その2
(* --- 問題8.5 --- *)
(* --- 問題8.6 --- *)
(* filename : ekimei.ml *)
(* 駅を表す型 *)
type ekimei_t = {
kanji : string; (* 漢字の駅名 *)
kana : string; (* ひらがなの駅名 *)
romaji : string; (* ローマ字の駅名 *)
shozoku : string; (* 駅が所属する路線名 *)
}
(* 目的:ekimei_t型のデータを受け取ったら,"路線名,駅名(かな)"の形式を返す *)
(* hyoji : ekimei_t -> string *)
let hyoji e = match e with
{
kanji = kj;
kana = kn;
romaji = rj;
shozoku = sh
} -> sh ^ ", " ^ kj ^ " " ^ kn
(* テスト *)
let test1 = hyoji {
kanji = "茗荷谷";
kana = "みょうがだに";
romaji = "myogadani";
shozoku = "丸ノ内線"
} = "丸ノ内線, 茗荷谷 みょうがだに"
# #use "ekimei.ml" ;;
type ekimei_t = {
kanji : string;
kana : string;
romaji : string;
shozoku : string;
}
val hyoji : ekimei_t -> string = <fun>
val test1 : bool = true
(* --- 問題8.7 --- *)
(* 駅と駅の接続情報を表す型 *)
type ekikan_t = {
kiten : string; (* 起点の駅名 *)
shuten : string; (* 終点の駅名 *)
keiyu : string; (* 経由する路線名 *)
kyori : float; (* 2駅間の距離 *)
jikan : int; (* 所要時間 *)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment