土曜日に紹介するHasp

山田淳雄

Haspって何?

どんな感じ?

Haskellの階乗計算関数

fact :: Integer -> Integer
fact 0 = 1
fact n = n * fact (n - 1)
等価なHaspコード

(defn fact (-> Integer Integer)
  ((0) 1)
  ((n) (* n (fact (- n 1)))))

どんな風になってるの?

難しい?

実用可能?

Haspじゃないと駄目なのはどんな用途?

Yahoo! Pipesの極簡単な解説

(練習してみたらこれ込みだと5分におさまらないので、実際のプレゼン時にはここは飛ばす)

Yahoo! PipesとHaspの関係

( Yahoo! Pipes以外にも、 App Inventor というのもある。
App InventorはKawa Schemeで実装されているとの事。
このような「ソースコードがデータ形式」のものはLispと相性が良い。というか本質的にLispと等価。 )

他にHaspの利点は?

おしまい

ご清聴ありがとうございました

付録:機能比較表(1)

機能 Lisp Hasp Haskell
リスト構造書き下しやすさ ◎S式! ◎Lispと同じ △「,」で区切る必要あり
tuple等の非リスト構造書き下しやすさ ○方言、処理系にもよるが標準ではなし、リーダーマクロで! △「(tup 1 2)」がHaskellでの「(1, 2)」相当、等々。リーダーマクロなし ◎普通に書ける

付録:機能比較表(2)

機能 Lisp Hasp Haskell
リスト内包、ガード記法 ○標準ではなし、マクロで! ○Haspとしては対応記法なし。Lispと同じように独自でマクロ組むか、「:hs」を使ってHaskell表記で書いてしまう ◎標準装備
メタプログラミング ○マクロで。歴史あり枯れているが型なし、デバッグ大変 △マクロで。Schemeで書く。特定ファイルに書く等の制約あり ◎Template Haskell。型あり安全だがマクロ以上に習熟が必要。枯れてなく、仕様変更される事あり

付録:機能比較表(3)

機能 Lisp Hasp Haskell
誰の為の文法か ソースコードはデータ構造。コンピュータが読み書きしやすい Lispと同じ 人間が読み書きしやすいように仕様が非常に練られている
型などによる特性 方言、処理系にもよるが基本は動的型。実働環境のプロセスの中に手をつっこんでプロセスを停止させずにアルゴリズム変更等が可能 Haskellそのもの 静的型、型推論などによって、ソースコード読み込み時(またはコンパイル時)に非常に強力なチェックを行ってもらえる

本当におしまい

ご閲覧ありがとうございました