我正在尝试使用@ManyToOne
private LearnItem learnItem;
并尝试向newtypes
的用户展示newtype F
。我在下面写了一个简单的用例示例,我想在应用Lib
后检查newtype F
。
然而,编译器指出我认为someFunc
实际上是F Double
,因此没有Show实例,即没有实例(Show(Double)> ; Double))因使用'show'而产生(也许你还没有将一个函数应用到足够的参数?)
我明白了,但我很难想到如何为此构建一个show实例。任何人都可以想到一种方法可以保留我的F (Double -> Double)
,同时隐藏newtype F
和F'
来自此库的用户吗?
someFunc'
答案 0 :(得分:1)
您可以通过编写
来澄清这种情况let arr = [{"id":1, "name": "abc"},{"id":2, "name": "fsd"},{"id":3, "name": "fasd"},{"id":4, "name": "fsdfas"},{"id":5, "name": "fad"},{"id":6, "name": "fasdf"},{"id":7, "name": "fasd"},{"id":8, "name": "fasdf"},{"id":9, "name": "fasdfs"},{"id":10, "name": "abc"}],
json = JSON.stringify(arr);
console.log(/"id":3(,|\})/.test(json));
console.log(/"id":42(,|\})/.test(json));
MakeF上的模式匹配
newtype F a = MakeF (a -> Double)
会给func :: F SomeType -> ...
func (MakeF g) = ...
。类型g :: SomeType -> Double
的值与类型F a
的函数同构,因此每个函数都可以进行相同的操作。
这里真正的答案是,以一种有意义的方式a -> Double
一个函数是不可能的。由于您不能Show
Show
,因此您无法a -> Double
Show
。