メモです_φ(・_・
hoge x y =
let
dx =
Debug.log "x" x
dy =
Debug.log "y" y
in
if x + y < 20 then
hoge (x + 5) (y + 2)
else
()
> T.hoge 1 2
y: 2
x: 1
y: 4
x: 6
y: 6
x: 11
y: 8
x: 16
() : ()
このようなときズラーッとくっついてしまって見にくいなぁと思い、空行で区切ってみたのですが変なふうに区切られてしまい、それはDebug.logの表示が逆順であったりするからだと気づきました。
どうやって解決するのがメジャーな方法なのかわからずいい方法が知りたいのですが、ちょっとしたコードで見やすくはなりました。
type alias DBG =
String
nextD : DBG -> DBG
nextD dbg =
" " ++ dbg
printD : DBG -> String -> a -> a
printD dbg str =
Debug.log (dbg ++ str)
printDS : (a -> b) -> DBG -> String -> a -> a
printDS f str dbg a =
printD dbg str (f a)
|> always a
hoge x y dbg =
let
dx =
printD dbg "x" x
dy =
printD dbg "y" y
in
if x + y < 20 then
hoge (x + 5) (y + 2) (nextD dbg)
else
()
> T.hoge 1 2 ""
y: 2
x: 1
y: 4
x: 6
y: 6
x: 11
y: 8
x: 16
() : ()
他にも
_ = Debug.log "x" x
_ = Debug.log "y" y
このように変数にいれなければ、逆順にならなそうでした。
追記: みやもさんに他の方法を教えてもらいました。
ありがとうございます。
hoge x y =
let
dx =
Debug.log "x" x
dy =
Debug.log "y" y
in
if x + y < 20 then
(Debug.log "---------" hoge) (x + 5) (y + 2)
else
()
(Debug.log "---------" hoge) (x + 5) (y + 2)
思いつけませんでした。
hoge x y =
let
_ = Debug.log ""---" "---
in
let
dx =
Debug.log "x" x
dy =
Debug.log "y" y
in
if x + y < 20 then
hoge (x + 5) (y + 2)
else
()
let...in let...in
これも思いつけませんでした。