diff options
author | Mart Lubbers | 2015-04-24 14:35:17 +0200 |
---|---|---|
committer | Mart Lubbers | 2015-04-24 14:35:17 +0200 |
commit | a067356625105f50978443d3b0a0a5d8f6391184 (patch) | |
tree | d194d49f36232b8e5860ca557c75f11a3ac05afe /fp2/week2/mart/ToonFileMonad.icl | |
parent | updated practicum files (diff) |
rare shit
Diffstat (limited to 'fp2/week2/mart/ToonFileMonad.icl')
-rw-r--r-- | fp2/week2/mart/ToonFileMonad.icl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/fp2/week2/mart/ToonFileMonad.icl b/fp2/week2/mart/ToonFileMonad.icl new file mode 100644 index 0000000..acd62c2 --- /dev/null +++ b/fp2/week2/mart/ToonFileMonad.icl @@ -0,0 +1,30 @@ +module ToonFileMonad
+
+import StdArray, StdInt, StdString // expliciete imports van StdEnv om name-clash met StdFunc en StdIOMonad te voorkomen
+import StdIOMonad
+import StdMaybeMonad
+
+Start :: *World -> (Void,*World)
+Start world = doIO toon world
+
+toon :: IO Void
+toon = write "Voer een filenaam in: " >>= \_ ->
+ read >>= \filenaam ->
+ open (filenaam%(0,size filenaam-2)) Lees >>= \misschien_filehandle ->
+ case misschien_filehandle of
+ Nothing
+ = write ("Kon " +++ filenaam +++ " niet openen.\n") >>= \_ ->
+ return Void
+ Just filehandle
+ = toon_inhoud filehandle
+
+toon_inhoud :: Filehandle -> IO Void
+toon_inhoud filehandle
+ = eof filehandle >>= \einde ->
+ if einde
+ (return Void)
+ (readline filehandle >>= \misschien_regel ->
+ case misschien_regel of
+ Nothing = return Void
+ Just regel = write regel >>= \_ -> toon_inhoud filehandle
+ )
|