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

はてなブログへ引越します。

ここです Code Aquarium

モナドとかの演算子の型

(>>=) :: Monad m => m a -> (a -> m b) -> m b flip (>>=) :: Monad m => (a -> m b) -> m a -> m b (=<<) :: Monad m => (a -> m b) -> m a -> m b ap :: Monad m => m (a -> b) -> m a -> m b (<*>) :: Applicative f => f (a -> b) -> f a -> f b flip (…

逆FizzBuzz問題

オートマトンっぽい問題なのは分かるけど、それを実装するのは面倒くさいので必要と思われる長さのFizzBuzzシーケンスを切り出して全チェックしてます。 与えられた「Fizz Buzz リスト」 の長さを len とすると、解が含まれる範囲は先頭から高々「7 + (len -…

partitionしてmapする関数

こんなのあったら便利かもしれない関数。 partition したシーケンスを map で処理したいということがたまにある。それを簡略できると楽なことがたまにはあるかも。 実は欲しかったのは (mapncat 2 f coll) のパターン。 下のようなコードを書きたくて作った…

例の問題

CLの練習で適当に書いた。いったい何を訴えたいのかよくわからないコードになった。 解き方はいたって普通。 (require :alexandria) (require :cl-ppcre) (defun perms (n xs list fn) (if (zerop n) (funcall fn list) (loop for x in xs do (perms (1- n) …

ccl:*command-line-argument-list* がなんか変

● 実行形式ファイルが作りたい コマンドライン引数リストをそのまま表示するプログラム(Clozure CL) ;;; hello.lisp (defun -main () (format t "~a" ccl:*command-line-argument-list*)) (ccl:save-application "hello" :toplevel-function #'-main :prepen…

partial関数(マクロ)の続き

前回書いた partial マクロ利用例 (mapcar (partial #'args-rotate-right 1 #'make-list :initial-element 'X) '(1 2 3 4 5)) mapcar の第一引数をもう少し理解しやすい形にしたい。 そこで部分適用を段階的にしてみる。args-rotate-right 1 を部分適用した…