From 7ef2b20bbfd3fcf18b36ae6c643230ffdd17467c Mon Sep 17 00:00:00 2001 From: Paul Cadman Date: Thu, 14 Jul 2022 16:18:49 +0100 Subject: [PATCH] Add fibonacci sequence example program --- examples/milestone/Fibonacci/Fibonacci.juvix | 15 +++++++++++++++ test/BackendC/Base.hs | 2 ++ test/BackendC/Examples.hs | 3 ++- tests/examplesExpected/Fibonacci/expected.golden | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 examples/milestone/Fibonacci/Fibonacci.juvix create mode 100644 tests/examplesExpected/Fibonacci/expected.golden diff --git a/examples/milestone/Fibonacci/Fibonacci.juvix b/examples/milestone/Fibonacci/Fibonacci.juvix new file mode 100644 index 0000000000..ad5e1dd25c --- /dev/null +++ b/examples/milestone/Fibonacci/Fibonacci.juvix @@ -0,0 +1,15 @@ +module Fibonacci; + +open import Stdlib.Prelude; + +fib : ℕ → ℕ → ℕ → ℕ; +fib zero x1 _ ≔ x1; +fib (suc n) x1 x2 ≔ fib n x2 (x1 + x2); + +fibonacci : ℕ → ℕ; +fibonacci n ≔ fib n 0 1; + +main : IO; +main ≔ putStrLn (natToStr (fibonacci 25)); + +end; diff --git a/test/BackendC/Base.hs b/test/BackendC/Base.hs index 8119d9f353..a4f4a21fa8 100644 --- a/test/BackendC/Base.hs +++ b/test/BackendC/Base.hs @@ -63,6 +63,7 @@ standaloneArgs :: FilePath -> FilePath -> FilePath -> [String] standaloneArgs sysrootPath wasmOutputFile cOutputFile = [ "-nodefaultlibs", "-std=c99", + "-Oz", "-I", takeDirectory minicRuntime, "-I", @@ -86,6 +87,7 @@ libcArgs :: FilePath -> FilePath -> FilePath -> [String] libcArgs sysrootPath wasmOutputFile cOutputFile = [ "-nodefaultlibs", "-std=c99", + "-Oz", "-I", takeDirectory minicRuntime, "-I", diff --git a/test/BackendC/Examples.hs b/test/BackendC/Examples.hs index 50499ba837..badba7c2d2 100644 --- a/test/BackendC/Examples.hs +++ b/test/BackendC/Examples.hs @@ -37,5 +37,6 @@ allTests = tests :: [ExampleTest] tests = [ ExampleTest "Validity Predicate example" "ValidityPredicates" "Tests.juvix" "ValidityPredicates" "" StdlibExclude, - ExampleTest "MiniTicTacToe example" "MiniTicTacToe" "MiniTicTacToe.juvix" "MiniTicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" StdlibInclude + ExampleTest "MiniTicTacToe example" "MiniTicTacToe" "MiniTicTacToe.juvix" "MiniTicTacToe" "aaa\n0\n10\n1\n2\n3\n3\n4\n5\n6\n7\n8\n9\n" StdlibInclude, + ExampleTest "Fibonacci example" "Fibonacci" "Fibonacci.juvix" "Fibonacci" "" StdlibInclude ] diff --git a/tests/examplesExpected/Fibonacci/expected.golden b/tests/examplesExpected/Fibonacci/expected.golden new file mode 100644 index 0000000000..dce7b72d7a --- /dev/null +++ b/tests/examplesExpected/Fibonacci/expected.golden @@ -0,0 +1 @@ +75025