@@ -254,6 +254,9 @@ execApp' env ctxt (EP _ (UN "mkForeign") _) (_:fn:(EHandle h):rest)
254254 | Just (FFun "fileClose" _ _) <- foreignFromTT fn = do execIO $ hClose h
255255 execApp' env ctxt ioUnit rest
256256
257+execApp' env ctxt (EP _ (UN "mkForeign") _) (_:fn:(EPtr p):rest)
258+ | Just (FFun "isNull" _ _) <- foreignFromTT fn = let res = if p == nullPtr then 1 else 0 in
259+ execApp' env ctxt (EConstant (I res)) rest
257260
258261execApp' env ctxt f@(EP _ (UN "mkForeign") _) args@(ty:fn:xs) | Just (FFun _ argTs retT) <- foreignFromTT fn
259262 , length xs >= length argTs =
@@ -300,6 +303,8 @@ execApp' env ctxt f@(EP _ n _) args =
300303 primRes Fl (fromRational (toRational i))
301304 getOp (UN "prim__intToStr") [EConstant (I i)] =
302305 primRes Str (show i)
306+ getOp (UN "prim_lenString") [EConstant (Str s)] =
307+ primRes I (length s)
303308 getOp (UN "prim__ltInt") [EConstant (I i1), EConstant (I i2)] =
304309 primResBool (i1 < i2)
305310 getOp (UN "prim__mulBigInt") [EConstant (BI i1), EConstant (BI i2)] =