タグ付けされた質問 「unit-type」

1
Haskellで評価される関数a->()にはどのような規則がありますか?
タイトルが言うように:評価されるユニットを返すHaskell関数にはどのような保証がありますか?そのような場合、いかなる種類の評価も実行する必要はないと考えられ()ますが、厳密さの明示的な要求が存在しない限り、コンパイラーはそのようなすべての呼び出しを即時値に置き換えることができます。リターン()またはボトム。 私はこれをGHCiで実験しましたが、逆のことが起こっているようです。つまり、そのような関数は評価されているように見えます。非常に原始的な例は f :: a -> () f _ = undefined 評価f 1すると、が存在するためにエラーがスローされるundefinedため、評価が確実に行われます。ただし、評価の深さは明確ではありません。場合によっては、を返す関数へのすべての呼び出しを評価する必要があるほど深くなるように見えることがあり()ます。例: g :: [a] -> () g [] = () g (_:xs) = g xs このコードは、を指定すると無限にループしg (let x = 1:x in x)ます。しかしその後 f :: a -> () f _ = undefined h :: a -> () h _ …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.