2013-01-01から1年間の記事一覧

Forth 情報

個人的 Forth 情報の更新版。 実装するための情報 Moving Forth: Part1 http://www.bradrodriguez.com/papers/moving1.htm Threaded code について CS 636 / 536 Spring 2009 The Structure of Programming Languages 講義録。詳しくてとてもよい。 http://e…

関係代数(3)

Template Haskell でコード生成を行うようにしたので、関係演算の実装に戻る。project 演算は、集合に対する演算と見なせば以下のように単純に実装できる。 project :: (Eq a, Eq b) => (a -> b) -> R a -> R b project f (R s) = R (S.map f s) 実例は以下…

Raspberry Pi

購入。 無線LAN 資料 http://www.lifehacker.jp/2013/02/130226raspberry_pi_guide.html Raspberry Pi初心者のためのOS別セットアップガイド http://blog.bnikka.com/raspberrypi/raspberrypi-install.html Raspberry Pi マウス・キーボード無しでインストー…

Template Haskell の例

追記: さらに更新(6/23)。 追記: ちょっと更新。Template Haskell を以下のように進めている。 生成したいボイラープレートの一部を書き下し、コンパイルが通ることを確認する。 インデントによるレイアウト規則を使っている場合は、次に行う構文木の調査の…

関係代数(2)

属性、タプル、リレーショナルを以下のように実装した。いまのところ、5つの属性からなるタプルまでしか実装していない。 type Attr = String -- | Attribute data A a = A Attr a deriving (Eq, Show) -- | Tuple data T1 a = T1 (A a) deriving (Eq, Show…

関係代数(1)

Haskell の練習に関係代数を実装しよう。関係代数は強い静的型ととても相性が良さそうだ。データ構造は色々な定義ができそうだけど、可能な限り、シンプルに行こう。 以下はまだ試行錯誤中のデータ構造。 -- 'Database in Depth', Chapter Two. -- Suppliers…

quickCheck 英文生成

英文生成 PAIP (Paradigms of Artificial Intelligence Programming) の第2章 「簡単な Lisp プログラムの例」では、ランダムな英文を生成するプログラムを取り上げています。勉強のため、この英文生成プログラムを Haskell で書いてみました。コードは以下…

quickCheck - Lisp のコンス

Lisp のコンスを用いたバージョン。ほぼ PAIP 2.3 を直訳したつもり。 まず実例。ex 、ex' 関数は共に Object -> Object -> IO Object で、QuickCheck の sample' 関数を使っている。ex は文を、ex' は解析木を吐く。 *EnglishRule13> ex simpleGrammar (S "…

quickCheck - Cons 版

コンスセルを使った版。途中。 module EnglishRule12 where import qualified Test.QuickCheck as Q import Control.Monad import Data.List import Data.Tree -- data data Object = Nil | S String | I Int | Object :. Object deriving (Eq) -- infixr 0 …

quickCheck 英文生成

まだバグがあるが改良版。 module EnglishRule7 where import Test.QuickCheck import Control.Monad import Data.List -- data type Name = String data Rule = Word [String] | Rule [[String]] deriving (Eq, Show) type Grammar = [(String, Rule)] simp…

quickCheck - 英文生成(4)

PAIP では同じ英文生成のルールデータを用いて、解析木(Parse Tree)を生成する。わたしの作ったデータ構造だとちょっと上手くいかなかったため、Rule データ型を改良して名前を持てるようにした。 module EnglishRule6 where import Test.QuickCheck import …

quickCheck 入門 - 英文生成(3)

少し考え方を変え、定義をそのままデータ構造にした。Grammar データを単なる Rule の配列でなくタプルのリストにしているのは、あとからルールを参照するため。 module EnglishRule3 where import Test.QuickCheck import Control.Monad import Data.List d…

quickCheck 入門 - 英文生成(2)

Maybe 型を使ってみた途中版。無駄なスペースが生成されるバグあり。あまり整頓された感じはしない。 module EnglishRule2 where import Test.QuickCheck import Control.Monad import Data.List import Control.Applicative data Sym = Sym String deriving…

quickCheck 入門 - 英文生成

英文生成の簡単な版は、QuickCheck を使うことで以下のように書けた(PAIP 2.2 A Straightforward Solution)。 module English where import Test.QuickCheck import Control.Monad verb = elements ["hit", "took", "saw", "liked"] :: Gen String noun = el…

quickCheck 入門

Haskell の quickCheck の簡単な例を作った。 式 データ型 Obj は、Nil 、数、シンボル、コンスセルの何れかであり、コンスセルはデータ型 Obj 二つからなる。 module ConsCell where import Test.QuickCheck import Control.Monad data Obj = Nil | N Int |…

三味線の譜面

PostScript

clojure overtone+lilypond

メモ clojure プロジェクト作成 clojure プロジェクト作成 lein new clj-lily clojure namespace

PSISE - PostScript in S-Expression (Elisp)

PostScript を S-式で書いて対話的にスクラッチバッファで参照するための elisp PSISE を書きました。https://github.com/cranebird/psise-el/wiki