http://oss.timedia.co.jp/index.fcgi/kahua-web/show/ossz/oneline/2006-04-18
id:sumim:20060418:p1 の続き。nobsun の Haskell による解答を意訳で。
| ff | ff := [:real | real abs caseOf: { [0] -> [real]. [1] -> [real sign * Float infinity]. [Float infinity] -> [real sign negated]} otherwise: [ real abs < 1 ifTrue: [1 / real negated] ifFalse: [1 / real]]]. ^ #(1.2 1 0.2 0 -0.2 -1 -1.2) collect: [:rr | ff value: (ff value: rr)]
=> #(-1.2 -1 -0.2 0 0.2 1 1.2)
絶対値が1末満か否かを“フラグ”に用いて、そのとき区別の付かない1を無限に飛ばすのがミソでしたか。