packages feed

ivory-examples-0.1.0.1: examples/Array.hs

{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}

module Array where

import Ivory.Language
import Ivory.Compile.C.CmdlineFrontend

cmodule :: Module
cmodule = package "Array" $ incl arrayExample

runArrayExample :: IO ()
runArrayExample = runCompiler [cmodule] initialOpts { stdOut = True }

arrayExample :: Def('[Ref s (Array 4 (Stored Uint8)), Uint8] :-> ())
arrayExample = proc "arrayExample" $ \arr n -> body $ do
  arrayMap $ \ ix -> do
    v <- deref (arr ! ix)
    store (arr ! ix) (v + n)