gpt4 book ai didi

haskell - 使用不同参数调用时模板 Haskell 编译错误

转载 作者:行者123 更新时间:2023-12-04 18:13:31 25 4
gpt4 key购买 nike

为什么以下编译失败(在 GHC 7.4.2 上)?

{-# LANGUAGE TemplateHaskell #-}

f1 = $([| id |])

main = print $ (f1 (42 :: Int), f1 (42 :: Integer))

请注意,以下编译正常:
{-# LANGUAGE TemplateHaskell #-}

f1 = id -- Don't use template Haskell here.

main = print $ (f1 (42 :: Int), f1 (42 :: Integer))

有没有我可以用来编译前者的语言扩展?

我知道 Template Haskell 在这个例子中看起来很傻,但它是一个更复杂问题的简化版本,它需要 Template Haskell 处理任意大小的元组。

最佳答案

显然 f1被分配类型 Integer -> Integer而不是更一般的 a -> a由于某些原因。添加显式类型签名使您的示例对我来说编译得很好:

{-# LANGUAGE TemplateHaskell #-}

f1 :: a -> a
f1 = $([| id |])

main = print $ (f1 (42 :: Int), f1 (42 :: Integer))

关于haskell - 使用不同参数调用时模板 Haskell 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com