summaryrefslogtreecommitdiff
path: root/examples/experiments/listlike.hs
blob: 2d62447cff0303232747522cf0e401c650b8ebba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{-# OPTIONS_GHC -fglasgow-exts #-}

import qualified Data.ListLike as LL
import Numeric.LinearAlgebra
import Data.Monoid
import Foreign

instance Storable a => LL.FoldableLL (Vector a) a where
    foldl f x v = foldl f x (toList v)
    foldr f x v = foldr f x (toList v)

instance Storable a => LL.ListLike (Vector a) a where
    singleton a = fromList [a]
    head a = a @> 0
    tail a | dim a == 1 = mempty
           | otherwise  = subVector 1 (dim a -1) a
    genericLength = fromIntegral.dim


v k = fromList [1..k] :: Vector Double

f k = k+(3::Double)

main = print $ (LL.map f [1..5] :: Vector Double)