相关疑难解决方法(0)

如何在haskell中创建通用复杂类型?

我想创建一个复杂类型来表示复数.

以下作品:

Prelude> data Complex = Complex Int Int

Prelude> :t Complex
Complex :: Int -> Int -> Complex
Run Code Online (Sandbox Code Playgroud)

如何更改此接受任何Num类型,而不仅仅是Int.

我试过以下:

Prelude> data Complex a = Num a => Complex a a
Run Code Online (Sandbox Code Playgroud)

但得到了这个:

* Data constructor `Complex' has existential type variables, a context, or a specialised result type
    Complex :: forall a. Num a => a -> a -> Complex a
    (Use ExistentialQuantification or GADTs to allow this)
* In the definition of data constructor `Complex'
  In the data type …
Run Code Online (Sandbox Code Playgroud)

haskell

7
推荐指数
1
解决办法
321
查看次数

在Haskell中写这个Scala矩阵乘法

可能重复:
你能在haskell中超载吗?

你能实现一个可以在两个矩阵上工作的Matrix类和*运算符吗?:

scala> val x = Matrix(3, 1,2,3,4,5,6)  
x: Matrix =   
[1.0, 2.0, 3.0]  
[4.0, 5.0, 6.0]  

scala> x*x.transpose  
res0: Matrix =   
[14.0, 32.0]  
[32.0, 77.0]  
Run Code Online (Sandbox Code Playgroud)

所以人们不会说这很难,这就是Scala的实现(由Jonathan Merritt提供):

class Matrix(els: List[List[Double]]) {  

    /** elements of the matrix, stored as a list of  
      its rows */  
    val elements: List[List[Double]] = els  
    def nRows: Int = elements.length  
    def nCols: Int = if (elements.isEmpty) 0   
                     else elements.head.length  

    /** all rows of the matrix must have the same  
        number of columns …
Run Code Online (Sandbox Code Playgroud)

haskell scala

-11
推荐指数
3
解决办法
3203
查看次数

标签 统计

haskell ×2

scala ×1