タグ

forceに関するishideoのブックマーク (7)

  • 遅延リスト遊び - Emacsで学ぶLazyな世界(前編) - Code Aquarium

    (これは、Lisp Advent Calendar 2012の20日目の記事です。) 長いので前後編に分けます。お暇な方はどうぞ。 -*- delayとforce -*- 正格評価の言語でもクロージャがあれば遅延評価を行うことができます。計算式をクロージャに包んでしまえば、クロージャが呼び出されるまで中の式は評価されません。*1 先行評価 (+ 2 3) ;=> 5 遅延評価 (setq p (lambda () (+ 2 3))) ;=> 計算式を包んだクロージャ (funcall p) ;=> 5 遅延評価したい式をいちいちlambdaで包むのは面倒だし、lambdaだけでは「式を遅延評価させたい」という意図が伝わりません。ライブラリにしましょう。 (defmacro delay (expr) `(lambda () ,expr)) (defalias 'force 'funcall)

    遅延リスト遊び - Emacsで学ぶLazyな世界(前編) - Code Aquarium
  • Linux の cp コマンドで強制上書き : まだプログラマーですが何か?

    Linux のコマンドラインで cp といえば「ファイルコピー」コマンドです。 # cp a.txt b.txt とやれば「a.txt というファイルを b.txt という名前でコピー」です。簡単ですよね。 この cp コマンドには便利なオプションが数多くあります。例えば、 # cp -r /home/a /tmp で /home/a というディレクトリをまるごと /tmp に(/tmp/a というディレクトリを作って)コピーする、という命令になる、とかです。 この cp コマンドは賢いので、コピー先に同じ名前のファイルがあると、新しいファイルで上書きするかどうかを確認してくれます: # cp a.txt b.txt cp: `b.txt' を上書きしてもよろしいですか(yes/no)? ここで y(es) を押すと上書きコピー、n(o) を押すと上書きしません。 さて、 ディレクトリまる

    Linux の cp コマンドで強制上書き : まだプログラマーですが何か?
  • Scheme:たらいまわしべんち

    たらいまわし関数Haskell (hugs December 2001版)Ruby (1.8.0-preview2)Gauche (0.6.8)クロージャ版delay/force版クロージャでは何故計算量が減らないか議論 たらいまわし関数 tarai(x, y, z) := y if x <= y tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) otherwise eagerに評価すると、不要な枝の先の先まで計算してしまって大いなる無駄となる。 lazy evaluationの利点が光る一品である。 参考: 竹内郁雄 どう転んでもLisp WikipediaJa:竹内関数(WikipediaEn:Tak (function)) たらいまわし関数 たらいまわしべんち Haskell vs Ruby たらいまわしべんち最終

    Scheme:たらいまわしべんち
  • JavaScript Tips & Technique

    操作方法 → キー: 次のページへ ← キー: 前のページへ ↑ キー: 目次ページへ ↓ キー: 目次ページから戻る 目次ページでは ← → キーで一覧を移動し、クリックで選択します 10 年。 世界が JavaScript の真の実力を発見するのに要した時間である。 1995 年、Netscape 社の Brendan Eich により開発・設計された JavaScript は、「世界で最も誤解されたプログラミング言語」などと呼ばれもした、 ともすれば不遇とすらいい得る歳月を経て、あたりのそこここに満ち充ちていた「Web の旧来的なインタラクションの窮屈さを革命したい」という思いによって、ふたたび表舞台に招来された。 JavaScript は、Web の「あちら側」と「こちら側」とを取り結ぶ、もっとも古くてもっとも新しい、そして、もっとも重要な技術だ。次の 10 年を自らの手で創り出す

  • 本を読む FizzBuzzとGaucheで学ぶ遅延評価の基礎の基礎

    先週、仲間内で初心者向けRuby on Rails講座ってのを開く手伝いをしました。講座自体はさておき、懇親会のときに講師の人が、「Lispを勉強して、遅延評価で無限リストとかやってみたい」というようなこと(それだけじゃないけど)を言っていました。そこで、基というか、教科書まんまな説明をしてみます。ほとんど、特定1人対象の内容です 以下の例はScheme(Gauche)によります。 リストのn番めの要素を取り出す手続き まず、回り道ですが、リストのn番めの要素を取り出す手続きnthを定義してみます。FizzBuzz問題が1オリジンなので、ここではnthを1オリジンで定義してみます。Schemeの説明を省略すると、超単純なコードは以下のような感じかなと思います。 (define (nth lst n) (if (= n 1) (car lst) (nth (cdr lst) (- n 1)

  • JavaScript 1.7: ホットコーナー

    ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- JavaScript 1.7があるんですね。 http://developer.mozilla.org/ja/docs/New_in_JavaScript_1.7 New in JavaScript 1.7 JavaScriptは、CシンタックスのLispだと言い続けてきたけど、ますます Li

  • Life with Cygwin

    沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。

  • 1