module Main
%include C "stdlib.h"
%include C "string.h"
%include C "stdio.h"
-----
malloc : Int -> IO Int
malloc = foreign FFI_C "malloc" (Int -> IO Int)
memset : Int -> Int -> Int -> IO ()
memset = foreign FFI_C "memset" (Int -> Int -> Int -> IO ())
puts : String -> IO ()
puts = foreign FFI_C "puts" (String -> IO ())
puts_ptr : Int -> IO ()
puts_ptr = foreign FFI_C "puts" (Int -> IO ())
-----
instance Enum Char where
toNat c = toNat (ord c)
fromNat n = chr (fromNat n)
pred c = fromNat (pred (toNat c))
enumerate : List a -> List (Nat, a)
enumerate xs = zip [0..length xs] xs
-----
main : IO ()
main = do p <- malloc 50
memset p 0 50
for_ (enumerate ['a'..'z']) $ \ix => do
let i = fst ix
let x = snd ix
memset (p + cast i) (cast x) 1
puts_ptr p
-----