タグ

Schemeに関するu_wot_m8のブックマーク (48)

  • Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由
  • Basic questions and answers for GNU Guile (from the perspective of a Pythonista)

    Basic questions and answers for GNU Guile (from the perspective of a Pythonista) Guile is a Scheme interpreter which is the canonical extension mechanism for GNU programs. It aims at providing good access to C-libraries and (what’s the most interesting part for me) it can use real OS-level threads (no global interpreter lock). Here I want to share some of the answers I found when looking into GNU

  • an opinionated guide to scheme implementations — wingolog

    Hark, the beloved programing language! But hark, also: for Scheme is a language of many implementations. If Scheme were a countryside, it would have its cosmopolitan cities, its hipster dives, its blue-collar factory towns, quaint villages, western movie sets full of façades and no buildings, shacks in the woods, and single-occupancy rent-by-the-hour slums. It's a confusing and delightful place, b

  • 部分継続について本気出して考えてみた - (new Hatena).blog()

    以前何度か部分継続について書いたことがあるんですが、当時は表面的な振る舞いを観察して何となく分かった気になった程度の拙い説明しか出来ませんでした。 その上、最近のプログラミングでもほとんど活用しておらず、改めて理解し直す必要を感じてきた次第です。 そこで今回は、部分継続の概念的な理解を目指し、基礎的な事柄を中心にまとめていきたいと思います。 基的に PLT Scheme (MzScheme) の評価モデルに即して書いていくため、Scheme 一般に当てはまる話になっていない部分もあるかも知れません。その点ご了承ください。 Redex と継続 Scheme の評価モデルにおいて、 (+ 1 (+ 2 0))という式を評価するとき、まず (+ 2 0)の部分が評価され、その結果の値に対して (+ 1 [])という残りの計算が行われます。 ここで角括弧で示した部分を reducible exp

    部分継続について本気出して考えてみた - (new Hatena).blog()
  • モナド的な何かに向かって - (new Hatena).blog()

    Scheme でプログラムを書いていると (Scheme に限らずなんですが)、このようなパターンが繰り返し出てくることに気付きます: (let ((the-value (func-which-returns-useful-value-or-#f))) (if the-value (do-something-based-on the-value))) ある処理の結果に基づいて別の処理を行いたいんですが、元の処理の結果が有用なものかどうか分からないため、if でテストを行う必要がある、というものです。 この面倒な手続きを簡略化する一つの方法が、Paul Graham の On Lisp にある次のマクロです: (define-syntax when-bind (syntax-rules () ((_ (var exp) body ...) (let ((var exp)) (and var

    モナド的な何かに向かって - (new Hatena).blog()
  • Deriving the Y-Combinator

    In this post I'll derive the Y-combinator and explain all the steps taken. The key to understanding the Y-combinator is knowing precisely what it does. I am sure many people never understand Y-combinator because of this very reason, or because the introduction is too lengthy to comprehend. Therefore I'll give the shortest possible explanation of Y-combinator before I derive it so that you know wha

    Deriving the Y-Combinator
    u_wot_m8
    u_wot_m8 2013/01/09
    『Scheme手習い』9章での導出は、やっぱり飛躍がある
  • An argument against call/cc

    We argue against call/cc as a core language feature, as the distinguished control operation to implement natively relegating all others to libraries. The primitive call/cc is a bad abstraction -- in various meanings of `bad' shown below, -- and its capture of the continuation of the whole program is not practically useful. The only reward for the hard work to capture the whole continuation efficie

    u_wot_m8
    u_wot_m8 2012/08/11
    call//ccは害のほうが大きいから外せという主張
  • Island Life - fold, fold-left, fold-right

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - fold, fold-left, fold-right