No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1196 | 1197 | 1198 |...| 1252 | 1253 | 1254 || Next»

縁石でこける

今日は午前に輪読があったので傘をさしつつ雨の中を徒歩で研究室へ急いだ.傘をさしてると歩道ですれ違うのが面倒なので歩道と車道を交互に歩く.最後に車道から歩道へもどるとき,テーパーのついた塗料の塗られている縁石を右足で踏んだ.んで,踏み込んだ右足が左に滑ってこけた.きれいな足払い.受身をとっても右半身はびしょぬれ. まあ,こけても笑い話のネタになるからいいけど追い討ちのように研究室に人がいないのはどうかと... 人が来るころには乾いてこけた証拠もなくなるので面白くない.コケ損.

分割配送って...

アマゾンで複数の本を注文しておいたら勝手に分割配送にされていた... 複数回受け取るのが面倒だからいっぺんに注文したというに.予約ものが入ってるとこうなってしまうのだろうか?

ラムダ式をS,K,Iへコンパイル

自由変数のないラムダ式を S, K, I のコンビネータで記述するためのプログラムを書いてみた.演習の課題で S,K,I 以外のコンビネータを S,K,I で書けという問題があるそうだけどそんなのはプログラムでやるものだし(Bなんか手でやる気がしない).んで,毎度のごとく Haskell でコンパクトに.

data LExp = Lambda (Int, LExp)
          | Apply  (LExp, LExp)
          | Var    Int
          | S
          | K
          | I
ctc (Lambda (x, exp)) = let exp' = ctc exp in (ctc' exp' x)
  where
  ctc' (Apply (exp1, exp2)) x = Apply (Apply (S, ctc' exp1 x), ctc' exp2 x)
  ctc' (Var y) x = if y == x then I else Apply (K, Var y)
  ctc' l x = Apply (K, l)
ctc (Apply (exp1, exp2)) = Apply (ctc exp1, ctc exp2)
ctc x = x

ラムダ式 LExp はλ抽象,適用,変数と,コンビネータ S, K, I で.コンパイル自体はλ抽象を内側からコンビネータに変換していくだけ.変換はアプリケーションに関しては S にして,変数に関しては束縛されるなら I, そうでないなら K.

折角なのでコンビネータからラムダ式への変換(alpha変換, beta簡約)も書いて知ってるコンビネータも全部書いてみた CompileToCombinators.hs .

関数ポインタの判別?

C++ のテンプレートでテンプレート引数に関数ポインタが指定されたときだけ挙動を変えたい.でもやり方が良くわからない... ポインタかどうかの判定法は知ってるが,関数ポインタか否かはどうすれば?

Ornithopter

Project Ornithopterによると

noun An aircraft that derives all of its thrust and nearly all of its lift from flapping wings. In addition, an ornithopter retains 'bird like' characteristics such as its main wing in front and its stabilizing surfaces aft.

とのことで,鳥と同様に羽ばたきして飛ぶものらしい.鳥の詩でも聞こうかと Air 初回版のサントラの名前ってこんなんだっけ?と検索をかけ,単語を知ってから5年後にやっとその意味を知りましたとさ.ところで,私の Ornithopter はどこへ行ってしまったのやら... 見つからん.飛んでった?

考えていることがよくわかりません.芸を覚えさせるにはどうしたらよいのだろう? 一般には覚えないといわれているけど,本人が面白ければやるだろうし.ゲームでもしてくれると面白いのになぁ.

«Prev || 1 | 2 | 3 |...| 1196 | 1197 | 1198 |...| 1252 | 1253 | 1254 || Next»
Search
Feeds

Page Top