プログラミング言語論 第2回レポート


  1. (型クラス)

    プリント第4章 p.4 問4.5.1
      または
    プリント第4章 p.5 問4.6.1
    どちらか1問を選択して下さい。

    参考にするプログラム: TypeClassExample.hs ()

  2. main関数を持つプログラム)

    プリント第5章 p.4 問5.4.1(の 2つの小問のうちどちらか 1つ)
    ただし、文章に曖昧なところがあったり、難易度が高過ぎたりするので、 問題文を以下のように修正する。

    問 5.4.1 IOモナドを利用して次のようなプログラムを作成せよ。
    1. 入力中の数字 ('0''9')の出現回数をカウントする。
    2. 入力中の'@'出現する最初の10行を出力する。

    参考にするプログラム: Head.hs

  3. (モナド)

    次の C言語で記述された関数と(Cのint型と Haskellの Int型に共通する範囲において) 同等の関数を Haskellで定義せよ。

    int baz(int n) {
        int p = 1;
    
        while (n > 0) {
            if (n==3) {
                n--;  
                continue;
            } 
            p*=n;
            if (n%3==0) {
                n -= 4;
            } else {
                n -= 2;
            }
        }
        return p;
    }
    

    なお、Cの %に対応する Haskellの演算子は`mod`である。

    作成した Haskellの関数と元の Cの関数の定義の対応が 明らかでない場合、簡単に説明すること。

    参考にするプログラム: FactST.hs(プリント 第6章 p.8 のプログラム) ()

  4. (CPSへの変換)

    プリント第8章 p.5 問8.3.1
    このHTMLファイルを元にして下さい。

    参考にするプログラム: Hanoi0.html, Hanoi0.js (), Hanoi.html, Hanoi.js (), Fib.html, Fib.js ()

チャレンジ問題(ボーナス問題)

以下の問題は、非必須のチャレンジ問題です。

  1. (Prolog)

    Prolog言語をプリントで自習し、 プリント中のサンプルプログラムを元にして、 日本史や世界史、あるいは物語の中の有名な家系を Prologプログラムにし、 実行例を作成せよ。

  2. (Scheme)

    Scheme言語をプリントで自習し、 サンプルプログラム以外の call/ccの使用例を WWW などで探して、 できれば自分なりのアレンジを加えよ。

  3. (Haskell)

    Haskellによる画像作成ライブラリを用いて、 2, 3のオリジナル作品を作成せよ。


解答上の注意ほか

できるだけ短く簡潔におさめて下さい。

提出〆切は、2月23日(水)の試験時間です。 (オンラインの提出はありません。)


プログラミング言語特論のホームページ
Koji Kagawa