タグ

m-hiyamaに関するyheldのブックマーク (2)

  • CafeOBJの紹介とCafeOBJの不明なところ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    まだ咳が止まらない。不調だ。それはともかく: 「ソートと指標と型、実例をまじえて」に、CafeOBJのサンプルコードを出したので、久しぶりにCafeOBJを触ってみました。あー、やっぱりこれ面白いな。でも、よく分からないところもありますね。 CafeOBJのユーザーってどのくらいいるのだろう? かなり少数なんじゃないかな。僕がここで「よく分からない」と書いてみても反応があることは期待できそうにないけど、まー、書いてみる。 CafeOBJは、自然でコンパクトな記述ができる まず、CafeOBJのいいところを言っておくと、予約された特殊文字が少なく、前置/後置/中置の演算子も使え、演算子オーバーロードもOK、さまざまな略記が許されているし、と、そんなこんなで自然でコンパクトな記述ができるところですね。例えばアーベル群(可換群)の記述は: mod ABGRP { -- Abelian group

    CafeOBJの紹介とCafeOBJの不明なところ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • クロージャ、それなに? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    しばしば「クロージャ」って言葉を見かけますが、皆さん、どんな意味で使っているんだろう? 単に無名関数(ラムダ式)をクロージャと呼んでいるのかな? それとも、無名関数とそこに出現する(ローカルでない)変数の束縛(環境と呼ぶんだったかな)を一緒にしたもの? 後者の意味だとして、たまたま変数束縛が空なら単なる無名関数になるから、気にする必要もないようなもんだが、束縛されてない非ローカル変数が残っていてもクロージャなのかな? function makeAffineLinear(a) { return function(x) { return a*x + b; } } makeAffineLinearで返される関数は、aを固定しても大域的bで挙動が変わってしまうのだけど、そういうのもクロージャなの? たしか、クロージャ(closure)の語源は「自由変数が全て閉じている(束縛されている)」って、そん

    クロージャ、それなに? - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1