Gen是Functor的实例吗?

时间:2019-07-18 12:22:00

标签: haskell functional-programming

我正在了解Haskell中的函子,我想知道QuickCheck的Gen是否是############################################################################### # Summary: Returns the value of a variable given it's name as a string. # Required Positional Argument: # variable_name - The name of the variable to return the value of # Returns: The value if variable exists; otherwise, empty string (""). ############################################################################### get_value_of() { variable_name=$1 variable_value="" if set | grep -q "^$variable_name="; then eval variable_value="\$$variable_name" fi echo "$variable_value" } test=123 get_value_of test # 123 test="\$(echo \"something nasty\")" get_value_of test # $(echo "something nasty") 的实例?任何见解都会受到赞赏。

1 个答案:

答案 0 :(得分:10)

documentation for Gen中对此进行了描述:在 instances 部分下,它显示了Functor Gen

它是implemented as [src]

instance Functor Gen where
  fmap f (MkGen h) =
    MkGen (\r n -> f (h r n))

MkGenGen的数据构造函数。它包含类型为QCGen -> Int -> a的函数。因此,我们基本上要做的是创建一个函数\r n -> f (h r n),该函数将对h r n的结果进行“后处理”。