小编dai*_*chi的帖子

为什么Haskell [](列表)不是类型类?

我正在编写一个Haskell函数,它以列表作为输入.也就是说,没有理由它不能成为队列或出队,或任何允许我访问其"头部"及其"尾部"(并检查它是否为空)的东西.所以[a]输入类型似乎太具体了.但是AFAIK没有标准的库类型类可以捕获这个接口.当然,我可以将我的函数包装在Data.Foldable.toList中并使其变为多态wrt可折叠,但这看起来不太正确(惯用).

为什么没有标准的列表类型类?(为什么Haskell中的"容器"类型层次结构比我认为应该更少?)或者我错过了必要的东西?

haskell types interface list typeclass

6
推荐指数
2
解决办法
521
查看次数

Haskell中的部分memoization

我正在尝试找到一种好方法来记忆Haskell中部分域(非负整数)的函数,使用Data.MemoCombinators.

import Data.MemoCombinators

--approach 1

partFib n | n < 0 = undefined
          | otherwise = integral fib n where
  fib 0 = 1
  fib 1 = 1
  fib k = partFib (k-1) + partFib (k-2)

--approach 2

partFib2 n | n < 0 = undefined
           | otherwise = fib n
fib = integral fib'
  where
    fib' 0 = 1
    fib' 1 = 1
    fib' n = partFib2 (n-1) + partFib2 (n-2)
Run Code Online (Sandbox Code Playgroud)

方法1是我想要的方式,但它似乎不起作用.我假设这是因为fib每次partFib调用函数都被"重新创建" ,丢掉了memoization. …

haskell memoization ghc

5
推荐指数
1
解决办法
353
查看次数

标签 统计

haskell ×2

ghc ×1

interface ×1

list ×1

memoization ×1

typeclass ×1

types ×1