2015-01-01から1年間の記事一覧
#include <stdio.h> #define ASIZE(ARRAY) (sizeof(ARRAY) / sizeof(ARRAY[0])) #define REDUCE(ARRAY, FUNC, RESULT) for (int i = 0; i < ASIZE(ARRAY); i++) RESULT = FUNC(RESULT, ARRAY[i]) #define MAP(ARRAY, FUNC, RESULT) for (int i = 0; i < ASIZE(ARRAY) </stdio.h>…
Ros scriptでライフゲーム書いた。 lifegame.rosに実行可能権限を与えたあと、./lifegame.rosで起動する。 Enterキーを押すと一世代進む。 正整数を入力すると、その分がアニメーション付きで進む。 ./lifegame.ros *width* *height* *wait-time*
CPPシリーズ第三回。 毎度のごとくn番煎じの上に実用性は無い。 ghcにはCプリプロセッサを展開する機能が付いている。
まず、iotaを定義する。 簡潔にするため、オプション引数は使わない。 (defun iota (limit seed step) (if (> seed limit) nil (cons seed (iota limit (+ seed step) step)))) (> seed limit)を一般化して、終了条件を指定できるよう変更する。 (defun func…
もうひとつのScheme入門 16. 継続を写経した。 「継続」は、計算において必ず存在する。 しかし、明示的に扱われることが少ない。 例えば、 (* 3 (+ 1 2)) のような計算があるとき、(+ 1 2)を評価した後の残りの計算は、(* 3 _)である。 この部分を継続と呼…
問題のコードがこれ (defun read-with-prompt () (princ "> ") (read)) CLISPではきちんと動く。 [1]> (read-with-prompt) > hoge hoge SBCLではこうなる。 * (read-with-prompt) hoge > hoge princよりも先にreadが実行されてしまう。 この問題は、SBCLの最…
(declaim (inline function-name)) declaimはマクロ。 型宣言したり、インライン展開したり、コードの最適化に使われる。 http://cl.cddddr.org/index.cgi?%e6%9c%80%e9%81%a9%e5%8c%96#H-1yksz98dk7cep ここが詳しい。
Land of Lisp作者: M.D. ConradBarski,Conrad Barski,川合史朗出版社/メーカー: オライリージャパン発売日: 2013/02/23メディア: 大型本購入: 1人 クリック: 18回この商品を含むブログ (19件) を見る これを買った。 表紙にいる緑色の怪物はLispエイリアンと…
cppというコマンドがある。 引数にCのソースを取り、標準出力にプリプロセッサを展開したCのソースを返す。 で、Go言語のソースでも、Cのプリプロセッサを書いてcppに通せばプリプロセッサできる。 Cのプリプロセッサ on Go言語 実行はこうする。 $ cpp hell…
※注意: この記事に実用性はありません。 C言語で遊んでたら、突然写像の方のmapを書きたくなったので、ggってみた。 するとありがたいことにこんな記事が。 ワンダープラネット株式会社(WonderPlanet Inc.) でも、配列の長さをいちいち指定しないといけな…