Hatena::ブログ(Diary)

einblickerの日記 このページをアンテナに追加 RSSフィード

2011-03-12

make installしたConCaTが動かない

| 19:36 | make installしたConCaTが動かないを含むブックマーク make installしたConCaTが動かないのブックマークコメント

ConCaT

こいつをmakeしてmake installした後coqtop上で

Require Import Category.

とかしたらlibraryが見つからない的なエラーが出る…。

でもmakeした後に手動でConCaTフォルダごと/usr/lib/coq/user-contrib/に移したらちゃんと動いた。make installだとvoファイルだけを直に/usr/lib/coq/user-contrib/へコピーしてしまうのがどうもダメっぽい。

「圏論の基礎」ポチッた

| 19:34 | 「圏論の基礎」ポチッたを含むブックマーク 「圏論の基礎」ポチッたのブックマークコメント

The Haskell Programmer’s Guide to the IO Monad --- Don’t Panic

↑これが結構面白かったのでもっと勉強したいと思いこの本を買った。

圏論による論理学―高階論理とトポス

ざっと目を通してみるとfunctorとかnatural transformationとかの重要っぽい概念は説明されているんだけどmonadは扱われていなかった。圏論的にはmonadって脇役っぽい感じなんでしょうね多分。高階論理との関連部分は興味無くて殆ど飛ばし読みした。

んでmonadをもっと知りたいので遂にはマックレーンさんの本をポチッてしまった…。

圏論の基礎

多分読み通せずに挫折するんでしょうが。

delegateリテラルが非定数式扱いで泣いた

| 19:33 | delegateリテラルが非定数式扱いで泣いたを含むブックマーク delegateリテラルが非定数式扱いで泣いたのブックマークコメント

D言語delegateリテラルとtemplate使ってanaphoric ifを再現しようとしたら動かなくて泣いた。

import std.stdio;

template AIF(string cond, string then, string els = "")
{
  mixin("auto AIF = { auto it = " ~ cond ~ "; if (it) { " ~ then ~ "} else {" ~ els ~ "} };");
}

void main()
{
  int x = 3;
  AIF!(q{ 1 + x }, q{ writeln(it); })();
}

delegateリテラルが非定数式なので駄目らしい。まぁ仮に動いたとしてもAIF内部で普通のif文のようにreturnが使えないので微妙ではあるんだけれど。

ちなみにdelegateリテラルの代わりにfunctionリテラルでやってみても非定数式扱いになって駄目だった。delegateリテラルはともかくfunctionリテラルクロージャにならないんだから定数扱いでいいんじゃないかと思うんだけどどうなんでしょうね。


関数を定義するようにしたら今度は外側の変数アクセス出来ないので困る。

import std.stdio;

template AIF(string cond, string then, string els = "")
{
  mixin("void AIF(){ auto it = " ~ cond ~ "; if (it) { " ~ then ~ "} else {" ~ els ~ "} }");
}

void main()
{
  int x = 3;
  AIF!(q{ 1 + x }, q{ writeln(it); })(); //xにアクセス出来ないのでエラー
}

呼び出し側でmixinを書けばやりたいことはできる。

import std.stdio;

pure string aif(string cond, string then, string els = "")
{
  return "{ auto it = " ~ cond ~ "; if (it) { " ~ then ~ "} else {" ~ els ~ "} }";
}

void main()
{
  int x = 3;
  mixin(aif(q{ 1 + x }, q{ writeln(it); }));
}

でもaifが文字列返すだけってのはなんだか美しくない感じ。


そういえばD言語には「macro」という予約語(まだ使われてないっぽい)があるんだけど、これはそのうちマクロが導入されるってことなんだろうか…?

haru-sharu-s 2011/03/13 21:07 AST macroというのが入る予定です

einblickereinblicker 2011/03/14 06:30 コメントありがとうございます。
ひょっとしてLispのマクロでしょうか?>AST macro
だとしたら凄い期待できますねぇ。