#ocamlbook#

標準ライブラリからの抜粋。これは説明したほうがいいんじゃね?というやつ。

  • どのくらい詳しく解説するべきか…。長過ぎてもあれだし。 -- しもむら? 2007-02-16 (金) 17:32:59
  • この章全体で30〜40ページくらいになるように考えてもらえればと思います。あと、関数を一つずつ解説しなくても、まとめられる所はまとめて下さっても結構です。例えば、ファイル入出力のopen,read,closeとか。 -- ogasawara? 2007-02-18 (日) 04:19:08

Pervasives †

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/Pervasives.html

例外 †

  • raise
  • failwith
  • Failture
  • Not_found

整数演算 †

  • abs
  • mod

浮動小数演算 †

  • (**)
  • sqrt
  • exp
  • ceil
  • floor
  • int_of_float
  • infinity
  • neg_infinity
  • nan

文字列演算 †

  • (^)

文字演算 †

  • int_of_char
  • char_of_int

文字列演算 †

  • string_of_{bool,int,float}
  • {bool,int,float}_of_string

リスト演算 †

  • (@)

標準入出力 †

  • stdin/stderr/stdout
  • print_string
  • print_char
  • print_int
  • print_float
  • read_line

ファイル出力 †

  • open_out
  • output_string
  • close_out

ファイル入力 †

  • open_in
  • input_string
  • close_in

Listモジュール †

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/List.html

  • length

リストの長さを返します。

# List.length [1;2;3];;
- : int = 3
# 
  • hdとtl

hdは、リストの先頭要素を返します。

# List.hd [1;2;3];;
- : int = 1
# 

空リストに適用した場合には、例外を発生させます。

# List.hd [];;
Exception: Failure "hd".
# 

tlはhdの反対で、リストの先頭要素を除いた残りを返します。

# List.tl [1;2;3];;
- : int list = [2; 3]
# 

こちらも、空リストに適用すると例外を発生させます。

# List.tl [];;
Exception: Failure "tl".
# 
  • rev

与えられたリストの要素の順番を反転したものを返します。

# List.rev [1;2;3];;
- : int list = [3; 2; 1]
# 
  • concat

与えられた"リストのリスト"を結合し、1つのリストにします。

# List.concat [[1;2];[3;4];[5;6]];;
- : int list = [1; 2; 3; 4; 5; 6]
# 
  • map

引数に関数とリストを取って、リストの各要素に関数を適用する関数です。関数型言語らしい関数ですね。

# List.map Char.uppercase ['a';'b';'c'];;
- : char list = ['A'; 'B'; 'C']
# 

Charモジュールのuppercaseは、小文字を大文字に変える関数です。mapは、

mapとは写像のことで、この場合は、小文字の集合を大文字の集合に写像していることになりますね。

  • fold_left

fold_leftは、畳み込み関数というものです。この関数は、畳み込みに使われる関数fと初期値とリストを取って、現在値とリストの要素を順にfを使って畳み込んでいきます。例えば、リストの要素の和を計算する関数sumは、次のように定義できます。

# let sum numbers = List.fold_left (+) 0 numbers;;
val sum : int list -> int = <fun>
# sum [1;2;3;4;5];;
- : int = 15
# 

これは、次のように展開して考えるとわかりやすいかもしれません。

sum [1;2;3;4;5] = (((((0+1)+2)+3)+4)+5)
  • mem
  • find
  • filter
  • sort

Arrayモジュール &dagger;

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/Array.html

  • length
  • make
  • init
  • sub
  • to_list
  • of_list
  • map
  • mapi
  • fold_left
  • sort

Printfモジュール &dagger;

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/Printf.html

  • printf
  • sprintf

Hasttblモジュール &dagger;

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/Hashtbl.html

  • create
  • clear
  • add
  • find
  • fold

Stream モジュール &dagger;

http://ocaml.jp/archive/ocaml-manual-3.06-ja/libref/Stream.html

streamの拡張構文

  • of_list
  • of_string
  • of_channel
  • iter
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS