diff --git a/examples/false-interpreter/False.roc b/examples/false-interpreter/False.roc index 4c1f58e87f..97e6c25de3 100644 --- a/examples/false-interpreter/False.roc +++ b/examples/false-interpreter/False.roc @@ -21,10 +21,9 @@ app "false" InterpreterErrors : [ BadUtf8, DivByZero, EmptyStack, InvalidBooleanValue, InvalidChar Str, MaxInputNumber, NoLambdaOnStack, NoNumberOnStack, NoVariableOnStack, NoScope, OutOfBounds, UnexpectedEndOfData ] -main : List Str -> Task {} [] -main = \filenames -> - filenames - |> List.walk (\filename, task -> Task.await task (\_ -> (interpretFile filename))) (Task.succeed {}) +main : Str -> Task {} [] +main = \filename -> + interpretFile filename |> Task.await (\_ -> Stdout.line "Completed all tasks successfully") |> Task.onFail (\StringErr e -> Stdout.line "Ran into problem:\n\(e)\n") diff --git a/examples/false-interpreter/platform/Package-Config.roc b/examples/false-interpreter/platform/Package-Config.roc index 0d00b4c0ed..bc1740c227 100644 --- a/examples/false-interpreter/platform/Package-Config.roc +++ b/examples/false-interpreter/platform/Package-Config.roc @@ -1,5 +1,5 @@ platform examples/cli - requires {}{ main : List Str -> Task {} [] } # TODO FIXME + requires {}{ main : Str -> Task {} [] } # TODO FIXME exposes [] packages {} imports [ Task.{ Task } ] @@ -18,5 +18,5 @@ platform examples/cli getChar : Effect U8 } -mainForHost : List Str -> Task {} [] as Fx -mainForHost = \list -> main list +mainForHost : Str -> Task {} [] as Fx +mainForHost = \file -> main file diff --git a/examples/false-interpreter/platform/src/lib.rs b/examples/false-interpreter/platform/src/lib.rs index 3704bbff4c..e62e62174f 100644 --- a/examples/false-interpreter/platform/src/lib.rs +++ b/examples/false-interpreter/platform/src/lib.rs @@ -13,7 +13,7 @@ use std::os::raw::c_char; extern "C" { #[link_name = "roc__mainForHost_1_exposed"] - fn roc_main(args: RocList, output: *mut u8) -> (); + fn roc_main(args: RocStr, output: *mut u8) -> (); #[link_name = "roc__mainForHost_size"] fn roc_main_size() -> i64; @@ -64,11 +64,8 @@ pub unsafe fn roc_panic(c_ptr: *mut c_void, tag_id: u32) { #[no_mangle] pub fn rust_main() -> i32 { - let args: Vec = env::args() - .skip(1) - .map(|arg| RocStr::from_slice(arg.as_bytes())) - .collect(); - let args = RocList::::from_slice(&args); + let arg = env::args().skip(1).next().unwrap(); + let arg = RocStr::from_slice(arg.as_bytes()); let size = unsafe { roc_main_size() } as usize; let layout = Layout::array::(size).unwrap(); @@ -77,7 +74,7 @@ pub fn rust_main() -> i32 { // TODO allocate on the stack if it's under a certain size let buffer = std::alloc::alloc(layout); - roc_main(args, buffer); + roc_main(arg, buffer); let result = call_the_closure(buffer);