2011-12-01から1ヶ月間の記事一覧

partial関数書いてみた

●partial関数 Common Lisp で *1 (defun partial (f &rest args) (lambda (&rest rest-args) (apply f (append args rest-args)))) (funcall (partial #'* 2) 10) ;=> 20 (funcall (partial #'list 1 2) 3 4 5) ;=> (1 2 3 4 5) 一応できてますね。左から順…

オーバーフローする flatten

エントリータイトル変更しました。 「オーバーフローしない」-->「オーバーフローする」 ●On Lisp の flatten はスタック溢れを起す (defun flatten-a (lis) (labels ((rec (x acc) (cond ((null x) acc) ((atom x) (cons x acc)) (t (rec (car x) (rec (cdr…

Clojureでもクリスマスツリーを飾りました

この記事はClojure Advent Calendar 2011の13日目の記事です。一日+α 遅れましたが。シーケンス(リスト)でクリスマスツリーが作れるらしいので作ってみました。 ●元ネタ vallog: クリスマスツリーを飾りました。Lispで。 パラメトロン計算機: クリスマス…

seq と LazyList

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

F# の Project Euler 26 コードを改良した

昨日のエントリの続報です。 F#版改良コード 剰余シーケンス生成関数と、剰余の既出判定関数を一つにまとめました。パフォーマンスに悪影響を与えている疑惑がある 遅延シーケンス操作部分を無くすのが目的です。結果、桁違いに早くなりました。 前回 15 秒…

F# で Project Euler 26 を解いたら遅かった

問題はこれ : Problem 26 ● F# での解答 何故か遅い。うちの環境だと 15秒以上かかる。 ideone.com で試したらやはり同じくらいかかっているようで、タイムアウトでプロセスを kill されてた。 recurringLength に 再帰回数が大きくなるような引数*1を与える…