71 lines · 1.7 KB · Text
RawDownload
module System.Directory import public System.File public exportdata DirPtr : Type where toFileError : Int -> FileErrortoFileError 1 = FileReadErrortoFileError 2 = FileWriteErrortoFileError 3 = FileNotFoundtoFileError 4 = PermissionDeniedtoFileError x = GenericFileError (x - 256) fpure : Either Int a -> IO (Either FileError a)fpure (Left err) = pure (Left (toFileError err))fpure (Right x) = pure (Right x) %foreign "scheme:blodwen-current-directory"prim_currentDir : PrimIO String %foreign "scheme:blodwen-change-directory"prim_changeDir : String -> PrimIO Int %foreign "scheme:blodwen-create-directory"prim_createDir : String -> PrimIO (Either Int ()) %foreign "scheme:blodwen-open-directory"prim_openDir : String -> PrimIO (Either Int DirPtr) %foreign "scheme:blodwen-close-directory"prim_closeDir : DirPtr -> PrimIO () %foreign "scheme:blodwen-next-dir-entry"prim_dirEntry : DirPtr -> PrimIO (Either Int String) exportdata Directory : Type where     MkDir : DirPtr -> Directory exportcreateDir : String -> IO (Either FileError ())createDir dir    = do ok <- primIO (prim_createDir dir)         fpure ok exportchangeDir : String -> IO BoolchangeDir dir    = do ok <- primIO (prim_changeDir dir)         pure (ok /= 0) exportcurrentDir : IO StringcurrentDir = primIO prim_currentDir exportdirOpen : String -> IO (Either FileError Directory)dirOpen d    = do res <- primIO (prim_openDir d)         fpure (map MkDir res) exportdirClose : Directory -> IO ()dirClose (MkDir d) = primIO (prim_closeDir d) exportdirEntry : Directory -> IO (Either FileError String)dirEntry (MkDir d)    = do res <- primIO (prim_dirEntry d)         fpure res

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t