Skip to content

Instantly share code, notes, and snippets.

@susisu
susisu / README.md
Last active November 6, 2015 11:24
lazy.cpp patch

http://esoteric.sange.fi/essie2/download/lazy-k.zip の lazy.cpp を GCC でコンパイルするときのためのパッチです.

元は http://blog.livedoor.jp/dankogai/archives/51524324.html にあったものですが, なんか手元の環境で上手く当てられなかったので作りなおしました (やり方がまずかったのかもしれない).

patch lazy.cpp < lazy.cpp.patch

とかでパッチを当ててから, http://blog.cormoran-web.com/blog/lazyk/ に書いてあるように -fpermissive をつけて,

(define g '())
(define (foo)
(define x 1)
(define (f) x)
(call/cc (lambda (cont)
(set! g cont)
))
(print (f))
(set! x (+ x 1))
(define (generator f)
(define done #f)
(define state '())
(define yield '())
(lambda (v) (if done
(cons #t state)
(begin
(set! state (call/cc (lambda (return)
(set! yield (lambda (x)
(call/cc (lambda (cont) (return (cons cont x))))
This file has been truncated, but you can view the full file.
ぃぃぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 40 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃぃぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 40 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃぃぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 40 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 38 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 38 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃぃぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 38 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 36 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 36 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃいぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 36 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
ぃいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい 34 竹安佐和記 data/txt/jawiki-20150903-pages-articles.xml-428.txt
@susisu
susisu / loquat_range.js
Last active August 29, 2015 14:28
{m, n}
var lq = require("loquat");
function countTo(n, parser) {
if (n <= 0) {
return lq.pure([]);
}
else {
return new lq.Parser(function (state, csuc, cerr, esuc, eerr) {
var accum = [];
var currentState = state;
@susisu
susisu / Main.hs
Created August 5, 2015 16:20
HQ9F+
module Main where
import Control.Monad
import Control.Exception
import Data.IORef
main :: IO ()
main = loop `catch` ignore
where
loop :: IO ()
@susisu
susisu / gist:eeaedc601766c61c3fc3
Created April 16, 2015 16:41
おメールアドレス(適当)
^(([A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~]|"([A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~\(\)<>\[\]\:@\,\. ]|\\[A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~\(\)<>\[\]\:@\,\. \\"])*")(\.?([A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~]|"([A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~\(\)<>\[\]\:@\,\. ]|\\[A-Za-z0-9\!#\$%&'\*\+\-/\=\?\^_`\{\|\}\~\(\)<>\[\]\:@\,\. \\"])*"))*)@([A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)*|\[((1[0-9][0-9]|2(5[0-5]|[0-4][0-9])|[1-9][0-9]|[0-9])\.){3}(1[0-9][0-9]|2(5[0-5]|[0-4][0-9])|[1-9][0-9]|[0-9])\])$
@susisu
susisu / mailaddress.js
Created March 21, 2015 15:17
楽しいメールアドレス
var lq = require("loquat");
var atom = lq.alphaNum.or(lq.oneOf("!#$%&'*+-/=?^_`{|}~"));
var dotAtom = lq.char(".").then(atom).bind(function (c) { return lq.pure("." + c); });
var normal = atom.bind(function (head) {
return dotAtom.or(atom).manyChar().bind(function (tail) {
return lq.pure(head + tail);
});
});
var quotedAtom = lq.alphaNum.or(lq.oneOf("!#$%&'*+-/=?^_`{|}~()<>[]:;@,. "))
function makeTweet(parsers, scoreStr) {
var score = readScore(parsers, scoreStr);
if (score !== null) {
return "<header>" + score.toString();
}
else {
throw new Error("error");
}
}
@susisu
susisu / lambda.md
Created February 20, 2015 08:32
みんなだいすきラムダ式

みんなだいすきラムダ式.

function Lambda(argName, body) {
    this.argName = argName;
    this.body    = body;
}

Lambda.prototype.eval = function (env) {
    var argName = this.argName;