ST s a) -> anewVar :: a -> ST s (MutVar s a) 然后Haskell编译器将拒绝以下错误类型的表达式let v = runST (newVar True)因为为了计算runST,需要必须推广到那么,我的问题是,这里的通用量词的唯一工作是确保类型变量s在避免泛化的求值
我理解范畴中对偶的概念,但我很难理解F-余代数(F-代数的对偶)与Haskell中的惰性数据结构的关系。F-代数是用一个具有函数的内切函子描述的:f a -> a,如果你把F看作表达式的话,这是有意义的,而a是计算该表达式的结果,正如链接文章所解释的。同时,考虑到这一点,既然Haskell处于核心懒惰状态,那么Haskell F-余代数中的大多数数据类型是否代替了F-代数?F-代数不是懒散的求值吗?例如,如果数据类型(或者至少是那些具有无限数据能力的数据类型)是基于Hask
所以我正在做一些Real World Haskell的初始章节练习,我想知道GHCi中是否有一个选项可以让它在每次递归调用时显示带有参数的函数求值。举个例子,我写了一个简单版本的'map',当我应用它时,我希望GHCi能用实际参数显示每个递归调用(希望还有表达式结果)。一些可以让我跟踪幕后动态的东西。附注:在我写这篇文章的时候,我有一种感觉,它可能受到haskell执行模型的懒惰的限制,如果我错了,请纠正我。