J言語

http://d.hatena.ne.jp/flappphys/searchdiary?word=%2a%5bJ%5d
あたりに触発されてJ言語をちらりとみる。


J言語の fork が顔文字みたいだー。


ためしに、Haskell に組み込んでみる。

forks f g h x = (f x) `g` (h x)

g1 x =  denominator $ snd $ fst $ head $ filter ((==(-1)) . forks numerator (-) denominator . fst . fst) $ forks (map (r x)) zip id [1..]
  where
    fx = f1 $ Surd 0 1 x
    r x n = forks (((x%1)*) . (^2) ) (,) id $ toR $ take n $ f1 $ Surd 0 1 x

g x =  denominator $ snd $ fst $ head $ filter ((==(-1)) . forks numerator (-)
denominator . fst . fst) $ forks (map (r x)) zip id [1..]
  where
    fx = f $ sqrt $ fromInteger x
    r x n = forks (((x%1)*) . (^2) ) (,) id $ toR $ take n $ f $ sqrt $ fromInteger x

なんか妙に便利なんだけど。

s x y z = x z (y z) だから
forks f g h = s (g.f) h だ。


s のすごさの理解に一歩近づいたかも。