fork(1) download
  1. import Control.Applicative
  2. import Control.Monad
  3. import Foreign
  4. import Prelude hiding ((*), (+))
  5.  
  6. (=&) = poke
  7.  
  8. infixr 1 *=
  9. (*=) a b = poke a =<< b
  10.  
  11. (+) c i = foldr (.) id (replicate i succ) <$> c
  12.  
  13. (*) = peek
  14.  
  15. printf = snd >=> putStrLn . (:[])
  16.  
  17. (=.) _ _ = return ()
  18.  
  19. char _ = 0
  20.  
  21. infixr 0 //
  22. (//) f _ = f >> return ()
  23.  
  24. () _ _ = return ()
  25.  
  26. (%) f = malloc >>= (>>) <$> (f 'A') <*> free
  27.  
  28. {-#include<stdio.h>-}
  29.  
  30. {-int-} main = (%) $ \c p -> do
  31. {
  32. char c =. 'A';
  33. char* p // "ポインタ変数の宣言";
  34. p =& c // "変数(c) の番地を設定";
  35. printf("%c\n", (*)p) // "ポインタ変数から文字表示";
  36. p *= (*)p + 2 // "ポインタ変数から値を変更";
  37. printf("%c\n", (*)p) // "ポインタ変数から文字表示";
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 6260KB
stdin
Standard input is empty
stdout
A
C