Skip to content

Instantly share code, notes, and snippets.

Avatar

κeen KeenS

View GitHub Profile
@qnighy
qnighy / rust-patterns.md
Last active Jun 22, 2021
Rustのパターンっぽいやつメモ
View rust-patterns.md

パターンとはその言語が抽象化できなかった敗北の歴史である。 しかしどんなに優れた言語であってもあらゆる繰り返しに勝てるわけではない。 人は必ずメタ繰り返しを欲するからだ。 そしてそれはRustも例外ではない。

ここでは、OOPでも知られているパターンよりも、Rustに特有のパターンを思いつく限りまとめてみた。名前は適当。

  • crate splitting
    • でかいcrateを分割して、見通しを良くする・再コンパイルの分量を削減する・並列コンパイルを可能にする
    • 親玉crate(全てにdependする)と殿crate(全てにdependされる)があることが多いので、だいたい束みたいな形になる。
@leque
leque / ckcc.scm
Last active Jan 20, 2017
CKスタイルマクロで途中脱出
View ckcc.scm
#!r6rs
(import (rnrs))
;; From "Applicative syntax-rules: macros that compose better",
;; http://okmij.org/ftp/Scheme/macros.html#ck-macros
(define-syntax ck
(syntax-rules (quote)
;; yield the value on empty stack
((ck () 'v) v)
;; re-focus on the other argument, ea
@leque
leque / ck-zundoko.scm
Last active Jan 20, 2017
syntax-rulesズンドコキヨシ、またはマクロ展開時ズンドコキヨシ
View ck-zundoko.scm
#!r6rs
(import (rnrs))
;; R7RS 処理系で実行する場合は、上の行をコメントアウトし、
;; 下の行のコメントを外す
;; (import (scheme base) (scheme write))
;; R5RS 処理系で実行する場合は、ここから上をすべてコメントアウトする
;; From "Applicative syntax-rules: macros that compose better",
@leque
leque / freer.ml
Last active Aug 15, 2019
Freer monad in OCaml
View freer.ml
(*
Requirement: higher, ppx_deriving.show
*)
(*
Lightweight higher-kinded polymorphism
https://ocamllabs.github.io/higher/lightweight-higher-kinded-polymorphism.pdf
*)
open Higher
@leque
leque / freer-monad.scm
Last active May 11, 2016
Freer monad in Scheme
View freer-monad.scm
;;;; Freer monad in Scheme
;;;; See also
;;;; * "Freer monads, more extensible effects"
;;;; http://dl.acm.org/citation.cfm?doid=2804302.2804319
;;;; * Free monad in Scheme https://gist.github.com/wasabiz/951b2f0b22643a59aeb2
(use gauche.record)
(use util.match)
;;; data Freer f a where
;;; Pure :: a -> Freer f a
View partcont+call-with-file.scm
(use srfi-1)
(use gauche.partcont)
(define (main args)
(reset
(let* ((p1 (shift k (call-with-input-file (second args) k)))
(p2 (shift k (call-with-output-file (third args) k))))
(copy-port p1 p2))))
;; -> "./vminsn.scm", line 1375: Assertion failed: SCM_PAIRP((vm)->handlers)
@Jxck
Jxck / README.md
Created Dec 16, 2012
libuv TCP server/client sample
View README.md

how to compile

$ gcc -g -Wall -I /path/to/libuv/include /path/to/libuv/uv.a -framework CoreServices server.c -o server
$ gcc -g -Wall -I /path/to/libuv/include /path/to/libuv/uv.a -framework CoreServices client.c -o client
@potix2
potix2 / gist:3339485
Created Aug 13, 2012
ApacheBenchでJSONをPOSTする
View gist:3339485
% ab -n 10 -c 10 -p json.file -T "application/json; charset=utf-8" http://localhost/