Skip to content

Instantly share code, notes, and snippets.

View katzchang's full-sized avatar
🤯

Kazunori Otani katzchang

🤯
View GitHub Profile
<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}
<?php
class Curry
{
protected $callback, $bind;
protected function __construct($callback, Array $bind)
{
if(!is_callable($callback)) throw new InvalidArgumentException('$callback must be callable');
list($this->callback, $this->bind) = func_get_args();
}
@katzchang
katzchang / gist:4126092
Created November 21, 2012 17:07
rebaseはコミットグラフを綺麗にするためじゃなくてffマージをするためにあるのであった

ということで、ffマージはなぜ優れているかというと、マージ操作の際に機械的な構成変更が一切行われず、ブランチの移動が起こるのみなので、マージ後のブランチは、 必ず あなたが入念にテストしただろうマージしたブランチと全く同じ構成であることが保証されるわけである。これが大きい。

衝突検知をくぐり抜けて機械的マージが構成を壊してしまう例は他をご参照いただくとして、no-ffマージの場合にそういう面倒に対応する手段として次のようなものがあると思うが、いずれも確実性でffマージには劣る:

  • マージ前にバックマージを行い、マージ時の際をなくする
  • バックマージからマージまでの間に誰かのコミットが入るかもしれないので、たまに衝突したときのことも考えないとね
  • マージ後のテストで問題を発見し、修正をコミットする
  • 修正って場合によっては時間がかかる仕事でそのあいだmasterは不安定だし、マージ権限を持つ人が少数だとしたら負担でかいよね

ということで、どちらもffマージの恩恵を考えると、なかなか悩ましい。

@katzchang
katzchang / HelloCarry.java
Created November 28, 2012 16:40
HelloCarry.java - @katzchang
public class HelloCarry {
static <E1, E2, E3> Func<E1, Func<E2, E3>> carry(final Func2<E1, E2, E3> f2) {
return new Func<E1, Func<E2,E3>>() {
@Override
public Func<E2, E3> apply(final E1 e1) {
return new Func<E2, E3>() {
@Override
public E3 apply(E2 e2) {
return f2.apply(e1, e2);
}};
@katzchang
katzchang / GameOfLifeTest.scala
Created December 9, 2012 02:46
ライフゲーム実装例
package coderetreat
import org.scalatest.Assertions
import org.junit.Test
class GameOfLifeSuite extends Assertions {
@Test def game_of_life() {
assert(new Board(3, 4, Set()).toString === "000,000,000,000")
assert(new Board(3, 4, Set((0, 0), (0, 1), (1, 1))).toString === "110,010,000,000")
@katzchang
katzchang / Makefile
Last active October 13, 2015 20:28
gauche unitを書いた
GOSH=/usr/local/bin/gosh
L=./gu.scm
test:
$(GOSH) -l $(L) ./*test.scm

材料

  • 薄力粉 56g
  • 強力粉 20g
  • バター 56g
  • 卵液 117g
  • 卵黄 95g
  • バニラ原液 1g
  • 牛乳 200ml
  • 卵白 186g
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp)
(if (same-variable? exp var) 1 0))
((sum? exp)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
((product? exp)
(make-sum
(make-product (multiplier exp)
@katzchang
katzchang / .gitignore
Last active December 11, 2015 17:58
2013-01-28 SICP読書会 #gauche #sicp
.*
!.git*
@katzchang
katzchang / sexp_encode.php
Last active December 12, 2015 06:58
PHP配列をS式へ変換する
<?php
/*
* $ php sexp_encode.php | gosh -E"begin (write (read)) (write (read))" -E"exit"
*/
// TODO: symbolエスケープ?
function sexp_str_escape($str) {
return addcslashes($str, "\"\\\n\r\f\t\0");
}