显示和读取具有函数的数据类型的实例

时间:2016-07-22 11:11:31

标签: function parsing haskell types

我有一个包含函数值的数据类型,我希望能够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}}

那会怎么样?

提前致谢

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相同。

如果情况不是这样的话会变得更复杂。