【问题标题】:String stream in haskell [closed]haskell中的字符串流[关闭]
【发布时间】:2013-05-22 09:34:56
【问题描述】:

我正在尝试在 haskell 中创建此流 l = ["","a","aa","aaa",...]

有人可以帮助我吗?

【问题讨论】:

  • 使用迭代:iterate ('a':) []

标签: haskell stream char


【解决方案1】:

将初始化与重复结合起来:

λ: let l = inits $ repeat 'a'
λ: take 10 l
["","a","aa","aaa","aaaa","aaaaa","aaaaaa","aaaaaaa","aaaaaaaa","aaaaaaaaa"]

【讨论】:

    【解决方案2】:

    我们可以通过使用迭代地将元素consing到空列表中来实现

    iterate :: (a -> a) -> a -> [a]
    

    只是做

    iterate ('a':) ""
    

    【讨论】:

    • 这也比其他方法更节省内存。我们都希望我们的玩具示例尽可能高效,对吧?
    【解决方案3】:

    不使用预定义函数:

    l = l' ""
        where l' s = s : l' ('a':s)
    

    【讨论】:

      【解决方案4】:
      [replicate i 'a' | i <- [0..]]
      

      这并不完全是高级的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-07
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多