73 lines
1.3 KiB
Standard ML
Executable file
73 lines
1.3 KiB
Standard ML
Executable file
#!/usr/bin/env fun
|
|
|
|
/*
|
|
* This file is part of the Fun programming language.
|
|
* https://fun-lang.xyz/
|
|
*
|
|
* Copyright 2025 Johannes Findeisen <you@hanez.org>
|
|
* Licensed under the terms of the Apache-2.0 license.
|
|
* https://opensource.org/license/apache-2-0
|
|
*/
|
|
|
|
/*
|
|
* Function Definition Testing
|
|
*
|
|
* Covers:
|
|
* - Basic function syntax (`def`)
|
|
* - Handling multiple parameter types
|
|
* - Function return value testing
|
|
* - Function composition examples
|
|
*/
|
|
|
|
// Functions test: definitions, calls, parameters, locals, returns, and if/else.
|
|
|
|
print("=== Functions test start ===")
|
|
|
|
fun add(a, b)
|
|
return a + b
|
|
|
|
fun abs(x)
|
|
if (x < 0)
|
|
return -x
|
|
else
|
|
return x
|
|
|
|
fun sum3(a, b, c)
|
|
// local typed declaration
|
|
number t = a + b
|
|
return t + c
|
|
|
|
fun id(x)
|
|
return x
|
|
|
|
// Calls in expressions
|
|
print(add(2, 3)) // expect 5
|
|
print(add(10, -3)) // expect 7
|
|
print(abs(-7)) // expect 7
|
|
print(abs(4)) // expect 4
|
|
print(sum3(1, 2, 3)) // expect 6
|
|
print(add(add(1, 2), 3)) // expect 6
|
|
print(id(42)) // expect 42
|
|
|
|
// Call as statement (result dApache-2.0arded)
|
|
add(100, 23)
|
|
|
|
// Globals interacting with functions
|
|
number n = 5
|
|
print(add(n, 10)) // expect 15
|
|
|
|
print("=== Functions test end ===")
|
|
|
|
/* Expected output:
|
|
=== Functions test start ===
|
|
5
|
|
7
|
|
7
|
|
4
|
|
6
|
|
6
|
|
42
|
|
15
|
|
=== Functions test end ===
|
|
*/
|
|
|