Skip to content

Instantly share code, notes, and snippets.

diff -r dc3cb8ca8a4d sitelib/json.scm
--- a/sitelib/json.scm Wed Sep 04 22:14:31 2013 +0200
+++ b/sitelib/json.scm Thu Sep 05 13:33:27 2013 +0900
@@ -128,16 +128,35 @@
(if (char=? (parse-results-token-value results) (string-ref str pos))
(loop (+ pos 1) (parse-results-next results))
(make-expected-result (parse-results-position starting-results) str))))))
+ (define (interpret-string-unicode-escape results k)
+ (let loop ((i 0)
+ (acc '())
@SaitoAtsushi
SaitoAtsushi / fibonacci.hs
Created November 22, 2013 04:57
10000 のフィボナッチ数を計算して 20 桁ごとに行を区切って表示するプログラム。 ajhc でコンパイルすると誤った値が出力される。
import Data.List
data Mat a = Mat a a a a deriving (Show, Eq)
instance (Num a) => Num (Mat a) where
(Mat a b c d) * (Mat p q r s) = Mat (a*p+b*r) (a*q+b*s) (c*p+d*r) (c*q+d*s)
(Mat a b c d) + (Mat p q r s) = Mat (a+p) (b+q) (c+r) (d+s)
abs=undefined
signum=undefined
fromInteger x = let y = fromInteger x in (Mat y y y y)
module Data.Bignum (Bignum, toBignum) where
import Data.Word
import Data.Bits
import Data.List
newtype Bignum = Bignum {bignum_list :: [Word32]} deriving Eq
class IsBignum a where
@SaitoAtsushi
SaitoAtsushi / grape.c
Created December 2, 2013 04:16
ぶどうの房パズル。 改良版のつもりがかえって遅くなってしまった。
#ifndef L
#define L 5 /* 段数を指定する。 */
#endif
#define N ((L+1)*L/2)
static inline int pop_count(int x) {
static const int const table[] =
{0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
@SaitoAtsushi
SaitoAtsushi / sagittarius-0.5.0-bug.scm
Created January 23, 2014 13:06
Sagittarius 0.5.0 のバグ?
#!r6rs
;; Sagittarius 0.5.0 のバグ?
(import (rnrs))
(define-syntax let/scope
(lambda(x)
(syntax-case x ()
((k scope-name body ...)
#'(let-syntax
((scope-name
#!r6rs
;; petite chez scheme と ypsilon で挙動が異なる
(library (bound)
(export if-bound bound?)
(import (rnrs))
(define-syntax if-bound
(lambda(stx)
(syntax-case stx ()
((_ id consequent)
@SaitoAtsushi
SaitoAtsushi / library-a.sls
Created January 29, 2014 10:01
Ypsilon 0.9.6-trunk/r503 でエラーになるでよ
#!r6rs
(library (library-a)
(export with-library-a)
(import (rnrs) (library-accessor))
(define x 'library-a)
(define-accessor-for-outer-of-library with-library-a)
)
@SaitoAtsushi
SaitoAtsushi / reinterpret.sls
Created January 30, 2014 20:18
Ypsilon 0.9.6-trunk/r503 で期待と異なる結果が返ってくる
#!r6rs
(library (reinterpret)
(export reinterpret)
(import (rnrs))
(define-syntax reinterpret
(lambda(stx)
(syntax-case stx ()
((_ x)
(free-identifier=? (datum->syntax #'k (syntax->datum #'x)) #'x)))))
@SaitoAtsushi
SaitoAtsushi / pattern-match-lambda-test.scm
Last active August 29, 2015 13:55
Sagittarius 0.5.0 のバグ?
#!r6rs
(import (rnrs)
(pattern-match-lambda))
(define-syntax exam
(syntax-rules ()
((_ form expect)
(begin
(display 'form)
(display " ... ")
@SaitoAtsushi
SaitoAtsushi / pattern-match-lambda.sld
Last active August 29, 2015 13:55
case-lambda をより強力にして構造をもった引数やリテラルとのマッチを可能にした pattern-match-lambda 。
(define-library (pattern-match-lambda)
(export pattern-match-lambda)
(import (scheme base))
(begin
(define-syntax if-identifier
(syntax-rules ()
((_ condition seq alt)
(let-syntax ((foo (syntax-rules () ((_) seq))))
(let-syntax ((test (syntax-rules ()