データ点が与えられた時に、を計算するような関数をGaucheとHaskellで作ってみた。
Haskell
Haskellで無名関数のリストができているのに、printできないからできていないものと勘違いしていて無駄に時間を過ごした。
density :: Double -> (Double -> Double -> Double) gaussian u = exp (- u * u) density xi = \ x h -> gaussian((x-xi) / h) xi = [1,2,3,4,5,1,2,3,2,1,3,1,2] h = 2 main = do print $ map (\x -> sum $ map (\f -> f x h ) $ map density xi) [0,1,2,3,10]
Gauche
そのままだなあ。
(define X '(1 2 3 4 5 1 2 3 2 1 3 1 2)) (define h 2) (map (lambda (x) (fold + 0 (map (lambda (f) (f x)) (map (lambda (Xi) (lambda (xi) (exp (- (* (/ (- Xi xi) h) (/ (- Xi xi) h)))))) X)))) '(0 1 2 3 10) )