Monads/Writer monad: Difference between revisions
Content added Content deleted
(Added Go) |
|||
Line 421: | Line 421: | ||
divided by 2 -> 1.618033988749895" |
divided by 2 -> 1.618033988749895" |
||
}</pre> |
}</pre> |
||
=={{header|Julia}}== |
|||
<lang julia>struct Writer x::Real; msg::String; end |
|||
Base.show(io::IO, w::Writer) = print(io, w.msg, ": ", w.x) |
|||
unit(x, logmsg) = Writer(x, logmsg) |
|||
bind(f, fmsg, w) = unit(f(w.x), fmsg) |
|||
f1(x) = 7x |
|||
f2(x) = x + 8 |
|||
a = unit(3, "after intialization") |
|||
b = bind(f1, " after times 7 ", a) |
|||
c = bind(f2, " after plus 8", b) |
|||
println("$a => $b => $c") |
|||
</lang>{{out}} |
|||
<pre> |
|||
after intialization: 3 => after times 7 : 21 => after plus 8: 29 |
|||
</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |