[ruby-list:37655] で str =~ re よりも re =~ str が正しいと言ったのは、 Ruby 言語とライブラリの設計者であるまつもとさんが 「そっちのほうが正しい (推奨する)」という旨の発言をしているからです。 であるからして Ruby においては正規表現を左にするのが正義なのです。 例によって Ruby の正義は予告なく変わる可能性がありますが、 変化の可能性は現在の正義を否定するものではありません。
ま、正義なんてのは所詮その程度でしょ。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
たしかruby本で見たような話(=~)だと思ったんですが(注意点として書いてありましたね)、その根拠はなんだろうな? と再考してみたという話でした。
prettyprint.rb みたいなのは Haskell のほうが楽だと思うなぁ。
prettyprint が、と言うよりも、akr さんの考えかたが
(比較的) Haskell と親和性があるってことはありません?
あっ、ちなみに、Haskellで解きやすい問題があるってのは
もちろん否定しません。というか、それは当然として、
ヘロヘロっとした問題を Haskell で解けたらいいなあ〜、
というのがぼくのスタンスってことです。
Haskell では toy program でも、いろいろ遊べてしまうので、そこまで止まりのことが多かったりして。。。:)
お騒がせしていてすみません。私は役に立つプログラムはほとんど書いたことがないものですから、、、(^^;;;;;
思考を表現する言語ってとらえるとまた別の面白い部分もあるのかもしれません。「知の限界」チャイティン著 のLispの話を読むと実行するためのものというよりも表現するための言語という感じがします。
"The Craft .." って7月に新版が出るみたい。
shiroさんが燃えたようです。:-)
http://shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aTaxiNumber&l=jp
Shiroさんのコード昨日見ました。もう一回
Schemeでの遅延評価について勉強してから
顔を洗って出直します。(^^;;;;;
ちなみに、元ネタです。知っている人も多い
と思いますが。
ラマヌジャンの話はホフスタッターのゲーデル
、エッシャー、バッハで読みました。
Haskellのコードは武市先生の関数プログラミングの論文集
の本で見ました。遅延評価がうまくいく例だと思った
記憶があります。いずれも、本は人にあげたり、図書館
から借りたものなので手元にはありません。
発見:
#!/usr/bin/env runhugs
-- Ramanujan Numbers:
-- c.f. http://www.ipl.t.u-tokyo.ac.jp/~onoue/pub/jssst01.pdf
module Main where
main = print (take 3 (ramanujan (\(a,b) -> a^3 + b^3)))
ramanujan f = [(x,y) | (x,y)<- zip s (tail s), f x == f y]
where s = fsort f 1
fsort f k = (k,k) : fmerge f [(k,b) | b<-[k+1..]] (fsort f (k+1))
fmerge f (x:xs) (y:ys)
| f x <= f y = x : fmerge f xs (y:ys)
| otherwise = y : fmerge f (x:xs) ys
[ruby-math:00852]でチャレンジ!
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/852
ふるって応募下さい。:-)
ごめん、[ruby-math:00851]でした。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-math/851