-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Jikka.Core.Convert.EqualitySolving #135
Conversation
作成中にわからない点がいくつか出てきてしまったので質問させていただいてよろしいでしょうか 単射の関数として |
同じファイルでも別ファイルでもどちらでも構いません。やりやすい方で大丈夫です
単射性を使った変換はなし (あるいは簡単にできるところまで) で大丈夫です (#126 のチェックリストはとりあえず思い付いたものを列挙してみただけなので、リストにないものでも、あった方がよさそうなら足しておいてくれるとうれしい。逆に、リストに書かれてても、なくてもよさそうなものは無視してしまってください)
|
Equal' t (Minus' (BitNot' a) (BitNot' b)) Lit0 -> Just $ Equal' t (Minus' a b) Lit0 | ||
Equal' t (Minus' (Fact' a) (Fact' b)) Lit0 -> Just $ Equal' t (Minus' a b) Lit0 | ||
-- unpack list equality | ||
Equal' _ (Nil' _) _ -> Just LitFalse |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この行は間違えていそう。
nil == nil
の場合は Equal' _ a b | a == b -> Just LitTrue
があるので大丈夫なのですが、たとえば nil == (let xs = nil in xs)
みたいな場合に False
になってしまいます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
examples/dp_z-kubaru.pyの変換エラーですが、Jikka.Core.Convert.EqualitySolvingより少し上流で起こってる気がしてきました
例えば
return (-n)*(n+1)
が
return -n+n*n
に変換されてます
もうちょっと調べてみます
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(-n)*(n+1)
を -n-n*n
に変換するための rule は src/Jikka/Core/Convert/ArithmeticalExpr.hs にあって、その本体は src/Jikka/Core/Language/ArithmeticalExpr.hs にあります。その感じだとこいつらがバグってそう (すまん……)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます!
おそらく原因特定できました。
This reverts commit 203e26c.
@hotman78 まだ Draft になってるけど、バグなく動いてそうだし、ひとまずマージしてしまうのはどうだろう? まだやることがあったりなかったりするかもだけど、必要なら後から追加でやればよいので |
ありがとうございます!! |
マージしました |
close #126
特にList周りについて合ってるのか不安なのですが、一人で悩んでも埒が明かなそうなのでpull requestとして投げさせて頂きました。