ギークもどきの日記帳

雑多な知識が垂れ流される場所。ほとんど無害。

Hakyllでブログ作った

こうののブログ - Home stackにはHakyll用のテンプレートもあるので、ブログ制作そのものは簡単にできる。 Github Pagesの仕様にあわせるため若干のハックが必要だった。 具体的には、記事作成そのものはblogブランチで行い、_site/以下をmasterブランチにコ…

CのVariable-length array

C99では, 実行時に配列の長さを指定できる機能が追加された. #include <stdio.h> int foo(int n) { int array[n]; int array[0] = 1; int array[1] = 1; for (int i = 2; i < n; i++) { array[i] = array[i-1] + array[i-2]; } return array[n-1]; } sizeofは実行時に</stdio.h>…

stack ghciでllvm-hs読み込めないときにすること

$ stack ghci Configuring GHCi with the following ... lookupSymbol failed in relocateSection (relocate external) /usr/local/Cellar/llvm-4.0/4.0.0/lib/llvm-4.0/lib/libLLVMLTO.a: unknown symbol `__ZN4llvm3lto11thinBackendERNS0_6ConfigEjNSt3__…

GHCでFizzBuzz

GHCでFizzBuzzを書いた。 gen_nats(Max, Ns) :- true | gen_integers(1, Max, Ns). gen_integers(N, Max, Is) :- N =< Max | Is = [N | Is1], N1 := N + 1, gen_integers(N1, Max, Is1). gen_integers(N, Max, Is) :- N > Max | Is = []. map([], Fs) :- tru…

GHC(Guarded Horn Clauses)のインストール

GHC

GHCとは https://ja.wikipedia.org/wiki/Guarded_Horn_Clauses/ インストール方法 今回は、SWI-Prolog上に実装されたGHCの処理系をインストールする。 SWI-Prologは SWI-Prolog からインストールできる。 次に、 Software from UEDA Lab. から GHC system ru…

"int main(void) { return 0; }"のLLVM IRを読んだメモ

とりあえずの学習メモとして残す。 理解が怪しいところは?や(?)などをつけている。 理解が進んだ後に整理したものを書きたい。 int main (void) { return 0; } このプログラムはCにおける(多分)最小のプログラムで、単にステータスコード0を返すだけのプログ…

「最新コンパイラ構成技法」でハマったところのツイまとめ 5/3

SML/NJで最新コンパイラ構成技法のソース読み込んだら(CMで)、"unbound structure: TextIO in path TextIO.instrem"とか言われて詰んだ— こうの (@takoeight0821) 2017年5月3日 sources.cmに$/basis.cmを追加したらうまくいった(あと、smlnj-lib.cmも$/smlnj…

RoswellでCommon Lisp環境をセットアップする

Roswellとは (ざっくりと) Common Lispの処理系やQuicklisp、SLIMEなどのインストール、処理系ごとのオプションの違いの吸収などを行うすごい便利なツール。 Common Lisperなら使って損はない。 インストール 参照Wiki 1. Installation · roswell/roswell Wi…

高校で得られた知見とか感想とか

最近流行りの卒業エントリってやつです。 退職エントリの仲間で、長らく仮説上の存在でしたが、近年その実在が証明され、これからは爆発的に普及すると予測されています。 大学を卒業してから書こうと思ってましたが、なんか書き上がってしまったので高校卒…

Common Lispのライブラリ事情

ANSI Common Lispでは、ライブラリのフォーマットについてあまりちゃんとした仕様が存在しません。 当然、ライブラリを扱えないのは不便極まりないことですから、その点をカバーするためのシステムが存在します。 REQUIRE, PROVIDE 現在非推奨の、ANSI Commo…

Clozure CLをちょっと早くする

Clozure CLのLispの部分をコンパイルしてうんたらかんたらして起動とかを早くする。 ? (ccl:compile-ccl) フィボナッチ数の20番目を計算してテスト #!/bin/sh #|-*- mode:lisp -*-|# #| <Put a one-line description here> exec ros -Q -- $0 "$@" |# (progn ;;init forms (ros:ensure-asdf) ;</put>…

Roswell scriptでshebangツライときの覚え書き

ANSI Common Lispではshebangの存在は考慮されない。 しかし、Roswell scriptのデバッグをSlimeでしていると、shebangでリードエラーが起きてツラくなる。 その回避方法。 Roswellは起動時に、$HOME/.roswell/init.lispを実行する。 また、ros:ignore-sheban…

C++14でstd::vectorのmap関数書いた(白目)

大体一年ぐらい前に C言語でmapとreduce - ギークもどきの日記帳 という記事を書きました。 これをC++14で、パフォーマンスを気にしないブルジョワ仕様で作ってみてmapで力尽きたという報告です。 map関数本体 複数コンテナへの対応は難しいので、今回はstd:…

Emacsでアンチエイリアスがかかりすぎる on macOS

defaults write -app Emacs AppleFontSmoothing -int 0を実行して、アンチエイリアスのかけ具合を最低にするとうまいこといった。

RoswellでCommon Lisp環境をセットアップする 2016秋

こちらの記事で随時更新予定です RoswellでCommon Lisp環境をセットアップする - ギークもどきの日記帳 Roswellとは (ざっくりと) Common Lispの処理系やQuicklispのインストール、処理系ごとのオプションの違いの吸収などを行うすごい便利なツール。 Common…

Elixirで二重数を実装して自動微分するまで

最近プログラミングElixirを読んでいる。 実際にプロジェクトを作る流れを示した練習課題があったり、ライブラリ事情だったり、実用性の高いガイドブックのような形式で、リファレンスじみた退屈さがなくて読みやすい。 Elixir言語だけでなく、周りのエコシ…

メモ : macOS Sierraで`brew install llvm --with-lldb`ができないとき

https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt

macOS Sierraで`ros install sbcl`が動かない時の対処法

#52172 (sbcl @1.3.8_0: fix for build under current Xcode 8) – MacPorts $ export SBCL_MACOSX_VERSION_MIN=10.5 $ ros install sbcl これでうまくいく。MacportsやHomebrewのsbclも同様。

RoswellでCommon Lisp環境をセットアップする

takoeight0821.hatenablog.jp 書き直しました。

環境構築2016

homebrew 公式サイトにある通り。 /usr/localのアクセス権限を書き換えないといけなかった記憶があるが、以前インストールしていたからか特に問題なくインストールできた。 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/in…

iPhoneのバックアップ時に「"Macintosh HD"ディスクへのコピーに失敗しました。不明なエラーが発生しました(-54)。」

これの解決法。 support.apple.com 上記リンクのヘルプを参考に、iPhoneのバックアップイメージを削除する。 続いて、「今すぐバックアップ」からバックアップを作成する。 とりあえずこれで治った。

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…