mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
66 lines
1.1 KiB
Plaintext
Executable File
66 lines
1.1 KiB
Plaintext
Executable File
|
|
module samples.LogDeco
|
|
|
|
function log1 = |msg| {
|
|
return |fun| {
|
|
return |args...| {
|
|
println(msg)
|
|
return fun: invokeWithArguments(args)
|
|
}
|
|
}
|
|
}
|
|
|
|
@log1("calling foo")
|
|
function foo = |a| {
|
|
println("foo got a " + a)
|
|
}
|
|
|
|
@log1("I'am a bar")
|
|
function bar = |a| -> 2*a
|
|
|
|
let sayHello = log1("Hello")
|
|
|
|
@sayHello
|
|
function baz = -> "Goodbye"
|
|
|
|
function log2 = |msgBefore| -> |msgAfter| -> |func| -> |args...| {
|
|
println(msgBefore)
|
|
let res = func: invokeWithArguments(args)
|
|
println(msgAfter)
|
|
return res
|
|
}
|
|
|
|
@log2("enter foo")("exit foo")
|
|
function spam = |a| {
|
|
println("foo: " + a)
|
|
}
|
|
|
|
function logEnterExit = |name| -> log2("# enter " + name)("# exit " + name)
|
|
|
|
@logEnterExit("bar")
|
|
function egg = { println("doing something...") }
|
|
|
|
function main = |args| {
|
|
|
|
foo("bar")
|
|
|
|
println("---")
|
|
println(bar(21))
|
|
|
|
println("---")
|
|
println(baz())
|
|
|
|
println("---")
|
|
spam("bar")
|
|
|
|
println("---")
|
|
egg()
|
|
|
|
println("---")
|
|
let strange_use = log2("hello")("goodbye")({println(":p")})
|
|
strange_use()
|
|
|
|
println("---")
|
|
log2("another")("use")(|a|{println(a)})("strange")
|
|
}
|