星にゃーんのブログ

ほとんど無害。

セミの音も暑さも僕のものなのに夏の花火は見えないままで— 星にゃーん (@takoeight0821) 2019年7月27日 暑さがまだ残る夏の夜、あなたは重い鞄を引きずりながら家に向かって歩いていた。 「今日は散々な一日だった」とあなたは思う。 明日が終われば夏休み…

いつのまにか二十歳になっていた。 日曜の朝に起きるのは難しくなったが、代わりにテレビの録画は簡単になった。 昼過ぎに目を覚まし、アイスコーヒーを飲みながら予約録画した仮面ライダーを観る。 画面の向こうで戦ってるのは10年前の劇場版限定ライダーだ…

Homebrewで他のformulaから依存されていないformulaを列挙する

brew listでインストール済みのすべてのformulaを列挙する。 xargs -P ...でそれぞれのformulaについて、そのformulaに依存しているインストール済みのformulaの数を数える。 grep " 0"で依存されていないformulaのみを取得する。 $ brew list | xargs -P 10…

Coq 8.7.1でSoftware Foundationsを読もうとしてハマったメモ

Software FoundationsのProgramming Language FoundationsのEquiv.vをProof Generalで読み込んだら以下のようなエラーが出た。 Error: The file /Users/yuya/dev/src/local/softwarefoundations/plf/Maps.vo contains library Top.Maps and not library Maps…

プログラミング言語をつくっている

去年の夏頃からプログラミング言語を作っています。 こんな感じのソースコードから let extern print_int : Int -> Unit = "print_int" extern newline : Unit -> Unit = "newline" fun fib(n : Int) : Int = if n <= 1 then 1 else fib(n - 1) + fib(n - 2)…

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環境をセットアップする

(2018-11-30 追記) この記事の内容は古くなっている可能性があります。 Roswellとは (ざっくりと) Common Lispの処理系やQuicklisp、SLIMEなどのインストール、処理系ごとのオプションの違いの吸収などを行うすごい便利なツール。 Common Lisperなら使って損…

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秋

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

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 _)である。 この部分を継続と呼…