このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/669
#  [1] 授業単元:プログラミング 
#  [2] 問題文(含コード&リンク):コマンドライン./a.out <オプション> <引数1> <引数2> 
#  について、<オプション>がcatのときは<引数1>の後ろに<引数2>を連結した文字列を返し、 
#  <オプション>がcmpのときは両引数を比較し、同じ文字列の場合はsameを、異なる場合はdiffを表示するプログラムを作れ。 
#  

program :-
        'コマンドライン./a.out <オプション> <引数1> <引数2>について、<オプション>がcatのときは<引数1>の後ろに<引数2>を連結した文字列を返し、<オプション>がcmpのときは両引数を比較し、同じ文字列の場合はsameを、異なる場合はdiffを表示する'.

'コマンドライン./a.out <オプション> <引数1> <引数2>について、<オプション>がcatのときは<引数1>の後ろに<引数2>を連結した文字列を返し、<オプション>がcmpのときは両引数を比較し、同じ文字列の場合はsameを、異なる場合はdiffを表示する' :-

        user_parameters(L),
        オプションの取得(L,_オプション),
        引数1と引数2を取得(L,_引数1,_引数2),
        オプションによって機能の選択と実行(_オプション,_引数1,_引数2),!.

オプションの取得(L,_オプション) :-
        append(_,[_ハイフン付きオプション|_],L),
        sub_atom(_ハイフン付きオプション,0,1,Len,'-'),
        sub_atom(_ハイフン付きオプション,1,Len,_オプション),!.

引数1と引数2を取得(_ユーザパラメータ,_引数1,_引数2) :-
        findall(_引数,(
                    append(_,[_引数|_],_ユーザパラメータ),
                    \+(sub_atom(_ハイフン付きオプション,0,1,Len,'-'))),[_引数1,_引数2]).

オプションによって機能の選択と実行(cat,_引数1,_引数2) :-
        atom_concat(_引数1,_引数2,_連結した文字列),
        write_formatted('%t\n',[_連結した文字列]),!.
オプションによって機能の選択と実行(cmp,_引数,_引数) :-
        write('same\n'),!.
オプションによって機能の選択と実行(cmp,_引数1,_引数2) :-
        \+(_引数1=_引数2),
        write('diff\n'),!.