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


  1. 問3.8.1を解いて最初の素数100個のリストを求めて下さい。
    次の関数は最初からHaskellに用意されています。自分で定義する必要はありません。
      map          :: (a -> b) -> [a] -> [b]
      map f []     = []
      map f (x:xs) = f x : map f xs
      
      filter          :: (a -> Bool) -> [a] -> [a]
      filter p []     = []
      filter p (x:xs) = if p x then x : filter p xs else filter p xs 
      
      iterate      :: (a -> a) -> a -> [a]
      iterate f x  = x : iterate f (f x)
    
      take          :: Int -> [a] -> [a]
      take 0 _      = []
      take _ []     = []
      take n (x:xs) = x : take (n-1) xs
    
  2. 問4.10.2 (エラー処理+状態)
    テンプレートをダウンロードして、 {- ここを考えて下さい -}となっているところを埋めて下さい。
    その後テストプログラムを適当に変更して、 適切なエラーメッセージが出るかどうか確認して下さい。
  3. 非決定性のインタプリタ(4.12)で次の関数の値を計算してください。

    letrec 
       fact = fn n -> if n<=0 then 1 
                              else n*fact(amb n-1 or n-2) 
    in fact 9
    

TeXまたはWord(など)でレポートを作成して下さい。

締切は1月16日の授業時間です。


プログラミング言語特論のホームページ
Koji Kagawa (kagawa@eng.?????)