2013年12月29日日曜日

[OCaml]文字列のsplit

文字列を任意の文字列で分割するには、Str.splitを使う。
インタプリタで試してみると、

# let xs = Str.split (Str.regexp ",") "a,b,c,d";;
Characters -1--1:
  let xs = Str.split (Str.regexp ",") "a,b,c,d";;
 
Error: Reference to undefined global `Str'
#

怒られた。

Regular Expressions in OCaml を見て解決した。
インタプリタでは、str.cmaをロードしてから、Strモジュールを使う。

# #load "str.cma" ;;
# let xs = Str.split (Str.regexp ",") "a,b,c,d";;
val xs : string list = ["a"; "b"; "c"; "d"]
#

Listモジュールは何もしなくても使えたが、Strは明示的にロードしないと駄目なのか。
よく分からないことだらけだ。

冬休みなので、普段使わないOCamlの学習中。
関数型という同じジャンルのせいか、Haskellとかなり似ている言語だ。
Haskellの文法と、OCamlの文法が頭の中で混ってしまいそう。