星にゃーんのブログ

ほとんど無害。

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

C言語でmapとreduce

#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でライフゲーム

Ros scriptでライフゲーム書いた。 lifegame.rosに実行可能権限を与えたあと、./lifegame.rosで起動する。 Enterキーを押すと一世代進む。 正整数を入力すると、その分がアニメーション付きで進む。 ./lifegame.ros *width* *height* *wait-time*

HaskellでもCPP(C PreProcessor) したかった

CPPシリーズ第三回。 毎度のごとくn番煎じの上に実用性は無い。 ghcにはCプリプロセッサを展開する機能が付いている。

iotaからunfoldをつくる Common Lisp編

まず、iotaを定義する。 簡潔にするため、オプション引数は使わない。 (defun iota (limit seed step) (if (> seed limit) nil (cons seed (iota limit (+ seed step) step)))) (> seed limit)を一般化して、終了条件を指定できるよう変更する。 (defun func…

Scheme 継続

もうひとつのScheme入門 16. 継続を写経した。 「継続」は、計算において必ず存在する。 しかし、明示的に扱われることが少ない。 例えば、 (* 3 (+ 1 2)) のような計算があるとき、(+ 1 2)を評価した後の残りの計算は、(* 3 _)である。 この部分を継続と呼…

SBCLで(progn (princ hoge) (read))の実行順序が入れ替わるときの対処法

問題のコードがこれ (defun read-with-prompt () (princ "> ") (read)) CLISPではきちんと動く。 [1]> (read-with-prompt) > hoge hoge SBCLではこうなる。 * (read-with-prompt) hoge > hoge princよりも先にreadが実行されてしまう。 この問題は、SBCLの最…

declaim

(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 読んでみた。

Land of Lisp作者: M.D. ConradBarski,Conrad Barski,川合史朗出版社/メーカー: オライリージャパン発売日: 2013/02/23メディア: 大型本購入: 1人 クリック: 18回この商品を含むブログ (19件) を見る これを買った。 表紙にいる緑色の怪物はLispエイリアンと…

Go言語でもプリプロセッサしたかった

cppというコマンドがある。 引数にCのソースを取り、標準出力にプリプロセッサを展開したCのソースを返す。 で、Go言語のソースでも、Cのプリプロセッサを書いてcppに通せばプリプロセッサできる。 Cのプリプロセッサ on Go言語 実行はこうする。 $ cpp hell…

C言語でmapしたかった

※注意: この記事に実用性はありません。 C言語で遊んでたら、突然写像の方のmapを書きたくなったので、ggってみた。 するとありがたいことにこんな記事が。 ワンダープラネット株式会社(WonderPlanet Inc.) でも、配列の長さをいちいち指定しないといけな…