【问题标题】:How to represent a numerical table (for example a contingency table) in Haskell?如何在 Haskell 中表示数字表(例如列联表)?
【发布时间】:2015-01-13 10:34:31
【问题描述】:

在 C 语言中,最简单的方法是使用二维数组。哈斯克尔呢?列表列表似乎不是一个优雅的解决方案。 你有什么建议?

【问题讨论】:

    标签: haskell data-structures multidimensional-array contingency


    【解决方案1】:

    可以使用列表语法来描述多维数组字面量,但使用您认为最合适的底层数据类型。例如

    x :: Array U DIM3 Int
    x = fromListUnboxed (Z :. (3::Int) :. (3::Int) :. (3::Int))
               [1,2,3
               ,4,5,6
               ,7,8,9
    
               ,10,11,12
               ,13,14,15
               ,16,17,18
    
               ,19,20,21
               ,22,23,24
               ,25,26,27]
    

    是一个 3 维数组(类型 DIM3 Int)。具体语法可以用列表表示法(平面或嵌套)给出,编译器将负责对象的构造。

    【讨论】:

    • 感谢您的回答。请问.(或:.?)运营商是什么?
    • @fstab 以: 开头的运算符是数据构造函数。大概是这里构造数组大小的原因。
    • 所以这就像他在建立一个列表,但点是什么?
    • @fstab :. 本身就是一个运算符。
    • @BartekBanachewicz : 不幸的是,google:. 非常困难,所以如果不是数据构造函数,它是什么?
    【解决方案2】:

    Haskell 收集了大量的 ArraysVectors 和其他容器。

    要在其中之一中进行选择,您需要更详细地了解您的要求。

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 2018-09-17
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多