OCamlで指定した文字列がいくつ有るかカウントする方法

OCamlは標準ではStringから指定した単語の出現回数をカウントする関数は無いようです。 とうことで自作しました。 アルファベットのみ対応しています。 OCamlっていつになったらマルチバイト文字が普通に扱えるようになるんでしょう?

末尾再帰だと思うんですけど、try-withでも同様にちゃんと末尾再帰になるのか未確認です。

utopで試す場合は、Strモジュールを使っているので最初に#load "str.cma";;を実行しておく必要が有ります。

let count search from =

    let r = Str.regexp_string search in
    let rec _count count target =
        try
            let index = Str.search_forward r target 0 in
            _count (count+1) (Str.string_after target (index+1))
        with Not_found -> count
    in
_count 0 from
;;

公開日:2020/07/20

OCaml

About me

ドイツの現地企業でWeb Developer/System Administratorとして働いているアラフォーおじさんです。

プログラミングとかコンピュータに関する事がメインですが、日常的なメモとか雑多なことも書きます。

Links :
目次