haskell - 为什么没有推断出类型?
问题描述
{-# LANGUAGE DuplicateRecordFields #-}
data Foo = Foo {fld::Int}
data Bar = Bar {foo::Foo}
data Baz = Baz {fld::Int}
getFldFromFoo :: Foo -> Int
getFldFromFoo = fld -- ok
getFldFromBaz :: Baz -> Int
getFldFromBaz = fld -- ok
getFldFromBar :: Bar -> Int
getFldFromBar = fld . foo -- error: Ambiguous occurrence ‘fld’
-- getFldFromBar = (fld :: Foo -> Int) . foo -- ok
为什么fld
模棱两可?Foo -> Int
并且Baz -> Int
是不同的类型。我认为ghc可以fld
从foo
.
解决方案
推荐阅读
- html - 如何使用 react-router-dom 关闭浏览器后退按钮上的模式?
- java - 在线程中访问springboot中的命令行参数
- python - TypeError:参数必须是字符串或数字
- ios - 领域@count查询问题
- sql - 当插入记录时无法访问远程磁盘上的文件时会发生什么?
- c++ - 我可以将智能指针作为函数参数传递给生成顶点数组吗
- python - 通过flask App在heroku服务器中上传mongodb中的图片文件
- rest - REST API URL 设计最佳实践
- android - 如何在片段中添加浮动操作按钮?
- python - 不同形状的 Pandas 堆叠条形图