hirax.net::Keywords::「演算子」のブログ



2004-07-03[n年前へ]

青春18きっぷは定義式

 今年の春の青春18切符のコピー

       √a = 18旅路(ルート)の中では、人はいつも18(age)である。
に対してのツッコミ
ちなみにこの公式には”落とし穴”があり、普通に解くと「a=324」と答えが出てしまいます。誰がどのような旅をしても心の中ではいつも18歳、と伝えたいのでしょうか。
を見る。

√a = 18 それは、"="の定義次第に違いない。このコピーの作者は実は数式処理系に堪能で、"="は、いわゆる等号"=="ではなく、代入の"="かもしれない。つまり、「√aというものは全て18が代入される」という手順を意味しているというのも自然かもしれない。
 そして、さらにこの式は"√"という演算子(もしくは関数)を定義する式であって、(例えばMathematicaなら)この式は
root(a_) := 18
なんていう内容を書いてある、とも自然に読むことができるだろう。すると、これは「ルートをとるとどんなaも全て18になる」という定義だ。もっと素直に言い換えれば、それはコピーそのままの「旅路(ルート)の中では、人は誰でも18(age)になる」である。そういう処理が「旅路(ルート)」なんだと高らかに定義・宣言する式である。

girls=evil そして、(「女の子=悪」の証明風に言うのなら)「人のルート(root=根底にあるもの)はそんな18才の頃のようなものだ」とさらに想像してみるのはどうだろうか。青春18きっぷのポスターに書かれた小さな式は「旅は人を18歳の頃の気分にさせる。そして、それこそが人の根底にあるものなんだ」という言葉だと勝手に想像してみるのだって面白いはずだ。

 青春18きっぷの公式から"a=324"なんてなんだか少しツマラナイ答えを導いてしまうのではなくて、もっと色んな想像をして色んな答えを導いてみるのも良いのじゃないかな、と思う。答えが(自分の知識の範疇で想像できる)一つだけなんていうのは「青春18きっぷ」には似合わない。もっと、色んな期待とともに線路の先を眺めた方が、きっと面白いことを見つけられるに違いない。

2005-02-13[n年前へ]

組み合わせの数・お医者さんごっこ編

「やおい」の評価演算子理系の会話ってこんなん(その3:お医者さんごっこ編) 「お医者さんごっこ(シチュエーションプレイ)」をする時の組み合わせってどんな感じ?という話題の「組み合わせの数・お医者さんごっこ編

 「お医者さん対お医者さんってとかの同種同士の処理」「眼鏡っこ処理」「男×男処理(さらに前後関係重要)」「女×女処理(これも前後関係重要…なの?)」とか、人それぞれの各自コダワリ意見もあふれ出てきそうだが、そんな自分のアイデアを各自のページで構築してみるのも、一興かも。

2009-06-06[n年前へ]

Rubyで「ディープコピー」を示す演算子が欲しい

 ほとんど同じ動きをするソフトウェアを、ハードウェアを制御するシステムを、Mathematica、C++で作ったS-Functionを繋いだSimulinkモデル、そして、Rubyという3種類の異なる言語/システムで組んでみた。もっとも、Mathematicaのは、「考え」を作り出す・「考え」を整理するために使っているので、実際にはハードウェアには繋いで動かしているわけではないし、Rubyの場合もシリアルポートを介して外部ハードウェアとの入出力を行うことで、ハードウェア制御を行っている。

 Rubyでコードを書いていて、結構間違える・面倒くさいと感じてしまうのが、ディープコピー(値渡し)を自然に書けない、というところだ。とても小さなスクリプトを組む時には、シャローコピー(参照渡し)は便利で良いけれど、少し大きめのコード・クラスを組み合わせたコードを書いていると、ディープコピー(値渡し)をもう少し自然に・楽に書きたくなる。

 たぶん、言語のデフォルト状態で実装されていないということは、ディープコピーは使うべきではないのだろう。あるいは、それでも、使いたければ、

def dst=(Marshal.load(Marshal.dump(src)))
とでも書いて、演算子を再定義すれば良い(いや、少し違う演算子を定義すれば良いのだろうか)のかもしれない。しかし、何だかこれでは「一回ダンプして、もう一度読み直す」みたいな、マッチポンプの二度手間的な響きを感じてしまって、好きになれない。

 だから、Rubyで「ディープコピー」を示す演算子が欲しい。けれど、こんなことを「」思うときには、例外無くその言語・考え方に対する理解が足りないに違いない、とも思うのだけれど・・・。



■Powered by yagm.net