Mercury 勉強メモ

関数論理型言語 Mercury を勉強するブログです.

2013-07-09から1日間の記事一覧

Mercury サンプル: 簡易headコマンド

UNIXのheadコマンドの簡易版です. ファイルの最初の10行を表示します. $ ./head head.m % head.m :- module head. :- interface. :- import_module io. :- pred main(io::di, io::uo) is det. :- implementation. :- import_module int, list, string.

Mercury サンプル: 入力を大文字に変換する

ユーザの入力を受け取って,受け取った文字列の英字を大文字にする. > hello HELLO > mercury MERCURY > あいうabcえお あいうABCえお > (Ctrl-D)

Mercury サンプル: 階乗の表

画面に階乗の表を表示するプログラム. 実行結果 fact(1) = 1 fact(2) = 2 fact(3) = 6 fact(4) = 24 fact(5) = 120 fact(6) = 720 fact(7) = 5040 fact(8) = 40320 fact(9) = 362880

Mercury サンプル: Hello, World.

画面に Hello, World. と表示するプログラム. 実行結果 $ mmc hello.m $ ./hello hello, world.

よく使う述語: 入出力編

Mercury の標準ライブラリから, 入出力に関連するよく使いそうな述語をピックアップしました. よく使う述語 io.print :- pred io.print(T::in, io::di, io::uo) is det. :- pred io.print(io.output_stream::in, T::in, io::di, io::uo) is det. 任意の値…

P-99: 1.09 Eliminate consecutive duplicates of list elements

P-99: Ninety-Nine Prolog Problemsの問題にMercuryで解答していきます. ["a", "a", "a", "a", "b", "c", "c", "d", "e", "e", "e", "e"] [["a", "a", "a", "a"], ["b"], ["c", "c"], ["d"], ["e", "e", "e"]]