我有一个包含函数值的数据类型,我希望能够read
和 type Activation = (Vector Double -> Vector Double, Vector Double -> Vector Double)
data Layer = L { biases :: !(Vector Double)
, nodes :: !(Matrix Double)
, activation :: Activation
}
instance Show Layer where
show (L biases nodes _) = "(" ++ show biases ++ "," ++ show nodes ++ ")"
。我知道我无法读回函数,所以我想要一种在阅读时指定函数的方法。
这是我的数据类型:
readLayer :: String -> Activation -> Layer
我想要一个这样的函数:
{{1}}
那会怎么样?
提前致谢
答案 0 :(得分:3)
由于您选择显示图层的方式,您可以这样做:
readLayer str f =
let (biases, nodes) = read str
in Layer { biases = biases, nodes = nodes, activation = f }
也就是说,Layer的show实例与(Vector Double,Matrix Double)的show instance相同。
如果情况不是这样的话会变得更复杂。