我正在尝试使用类型系统来确保X永远不会从monad M中去掉。我希望它的工作方式类似于runST,因为它不可能混合来自不同线程的环境。type M s = State Int
newX = X <$> get
eval x = evalState x 0ghci> x = eval newXx :: X s
为什么ST monad中的类似代码会抛出错误,而我的不会?据我
我有一些通用的函数,这些函数在任何类中都不是真正有意义的静态方法。我想将它们封装在一个名称空间中,这样就不会与全局作用域中定义的函数发生冲突。对于我的命名空间类,我遵循广泛采用的模式,比如\ my \ namespaced \MyClass这样的类存在于包含路径上的/Namespaced/MyClass.php中。现在,我将它们放在同一名称空间下类所在目录的"functions.php“中。例如,\My\Namespaced\myFunct