mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-22 08:17:40 +03:00
Fix type mismatches in file.roc example
This commit is contained in:
parent
88ab511687
commit
96f8818b24
@ -1,5 +1,5 @@
|
||||
interface Result
|
||||
exposes [Result, isOk, isErr, map, mapErr, try, onErr, withDefault, unwrapOk, unwrapErr]
|
||||
exposes [Result, isOk, isErr, map, mapErr, try, onErr, withDefault]
|
||||
imports [Bool.{ Bool }]
|
||||
|
||||
## The result of an operation that could fail: either the operation went
|
||||
|
@ -8,6 +8,7 @@ hosted Effect
|
||||
forever,
|
||||
loop,
|
||||
dirList,
|
||||
envDict,
|
||||
cwd,
|
||||
stdoutLine,
|
||||
stderrLine,
|
||||
|
@ -1,5 +1,5 @@
|
||||
interface Env
|
||||
exposes [cwd]
|
||||
exposes [cwd, dict]
|
||||
imports [Task.{ Task }, Path.{ Path }, InternalPath, Effect, InternalTask]
|
||||
|
||||
## Reads the [current working directory](https://en.wikipedia.org/wiki/Working_directory)
|
||||
|
@ -1,6 +1,6 @@
|
||||
interface InternalProgram
|
||||
exposes [InternalProgram, fromEffect, toEffect]
|
||||
imports []
|
||||
imports [Effect.{ Effect }]
|
||||
|
||||
InternalProgram := Effect U8
|
||||
|
||||
@ -8,4 +8,4 @@ fromEffect : Effect U8 -> InternalProgram
|
||||
fromEffect = @InternalProgram
|
||||
|
||||
toEffect : InternalProgram -> Effect U8
|
||||
toEffect = \InternalProgram @effect -> effect
|
||||
toEffect = \@InternalProgram effect -> effect
|
@ -1,6 +1,6 @@
|
||||
interface Program
|
||||
exposes [Program, noArgs, withArgs, withNonUnicodeArgs]
|
||||
imports [Task.{ Task }, InternalProgram.{ InternalProgram }]
|
||||
exposes [Program, noArgs, withArgs, quick, withEnv]
|
||||
imports [Task.{ Task }, InternalProgram.{ InternalProgram }, InternalTask, Effect]
|
||||
|
||||
## A [command-line interface](https://en.wikipedia.org/wiki/Command-line_interface) program.
|
||||
Program : InternalProgram
|
||||
|
@ -5,5 +5,5 @@ platform "cli"
|
||||
imports [Effect.{ Effect }, InternalProgram.{ InternalProgram }]
|
||||
provides [mainForHost]
|
||||
|
||||
mainForHost : List Str -> Effect U8 as Fx
|
||||
mainForHost = \args -> InternalProgram.toEffect main args
|
||||
mainForHost : Effect U8 as Fx
|
||||
mainForHost = InternalProgram.toEffect main
|
||||
|
@ -1,10 +1,22 @@
|
||||
app "file-io"
|
||||
packages { pf: "cli-platform/main.roc" }
|
||||
imports [pf.Stdout, pf.Stderr, pf.Task, pf.File, pf.Path, pf.Env, pf.Dir]
|
||||
imports [
|
||||
pf.Program.{ Program },
|
||||
pf.Stdout,
|
||||
pf.Stderr,
|
||||
pf.Task.{ Task },
|
||||
pf.File,
|
||||
pf.Path,
|
||||
pf.Env,
|
||||
pf.Dir,
|
||||
]
|
||||
provides [main] to pf
|
||||
|
||||
main : Task.Task {} [] [Write [File, Stdout, Stderr], Read [File], Env]
|
||||
main =
|
||||
main : Program
|
||||
main = Program.noArgs mainTask
|
||||
|
||||
mainTask : Task U8 [] [Write [File, Stdout, Stderr], Read [File], Env]
|
||||
mainTask =
|
||||
path = Path.fromStr "out.txt"
|
||||
task =
|
||||
cwd <- Env.cwd |> Task.await
|
||||
@ -21,10 +33,14 @@ main =
|
||||
Stdout.line "I read the file back. Its contents: \"\(contents)\""
|
||||
|
||||
Task.attempt task \result ->
|
||||
when result is
|
||||
Err (FileWriteErr _ PermissionDenied) -> Stderr.line "Err: PermissionDenied"
|
||||
Err (FileWriteErr _ Unsupported) -> Stderr.line "Err: Unsupported"
|
||||
Err (FileWriteErr _ (Unrecognized _ other)) -> Stderr.line "Err: \(other)"
|
||||
Err (FileReadErr _ _) -> Stderr.line "Error reading file"
|
||||
Err _ -> Stderr.line "Uh oh, there was an error!"
|
||||
Ok _ -> Stdout.line "Successfully wrote a string to out.txt"
|
||||
msg = when result is
|
||||
Err (FileWriteErr _ PermissionDenied) -> Err "PermissionDenied"
|
||||
Err (FileWriteErr _ Unsupported) -> Err "Unsupported"
|
||||
Err (FileWriteErr _ (Unrecognized _ other)) -> Err other
|
||||
Err (FileReadErr _ _) -> Err "Error reading file"
|
||||
Err _ -> Err "Uh oh, there was an error!"
|
||||
Ok _ -> Ok "Successfully wrote a string to out.txt"
|
||||
|
||||
when msg is
|
||||
Ok ok -> Task.await (Stdout.line ok) \{} -> Task.succeed 0
|
||||
Err err -> Task.await (Stderr.line err) \{} -> Task.succeed 1
|
||||
|
Loading…
Reference in New Issue
Block a user