packages feed

feldspar-language-0.4.0.2: Examples/Simple/Pairs.hs

module Examples.Simple.Pairs where

import Prelude ()
import Feldspar
import Feldspar.Vector
import Feldspar.Compiler

-- | Haskell pairs are compiled to separate variables.
pairs1 :: Data Int32 -> Data Float -> (Data Int32, Data Float)
pairs1 x y = (x,y)

-- | Feldspar pairs are compiled to structs.
pairs2 :: Data Int32 -> Data Float -> Data (Int32,Float)
pairs2 x y = pair x y

-- | Selector functions: getFst, getSnd.
pairs3 :: Data (Int32,Float) -> (Data Int32, Data Float)
pairs3 p = (getFst p, getSnd p)

-- | Zipping two vectors into a vector of pairs.
pairs4 :: Data [Float] -> Data [Int32] -> Data [(Float,Int32)]
pairs4 xs ys = freezeVector $ zipWith pair (unfreezeVector' 256 xs) (unfreezeVector' 256 ys)