HaskellのContinuationモナドを雰囲気だけGaucheに移植してみる。 Contクラス まず、疑似Continuationモナドとして、Contクラスを作る。 Contクラスが持つrunContスロットは同名のgetter関数を持つ。 returnは全然ジェネリックファンクションになってないんだけど、>>=と横並びにしたかったので。 (define-class <Cont> () ((runCont :init-keyword :r :getter runCont))) (define-method return (a) (make <Cont> :r (lambda (k) (k a)))) (define-method >>= ((c <Cont>) f) (make <Cont> :r (lambda (k) ((runCont c) (lambda (a) ((ru