module DesugarFFI where

import Prelude
import FFI

-- top-level FFI call with multi type signature
addOne, addTwo :: Int -> Int

addOne = ffi "%1 + 1"
addTwo = ffi "%1 + 2"

-- FFI call in a let binding
addThree :: Int -> Int
addThree x =
  let go :: Int -> Int
      go = ffi "%1 + 3"
  in go x

-- FFI call in a where binding
addFour :: Int -> Int
addFour x = go x
  where
  go :: Int -> Int
  go = ffi "%1 + 4"

main = do
  let result = addOne . addTwo .  addThree . addFour $ 0
  putStrLn $ show result