Haskell,如何定义模块?

Has*_*ell 0 haskell module

我在Haskell中编写了一个非常简单的程序,它接受两个列表并合并.但我不明白如何在Haskell中定义Module.

希尔是我的代码

module Merge(Merge (empty, list)merge) where ....
merge::[a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) = x:y:(merge xs ys)
Run Code Online (Sandbox Code Playgroud)

我不知道,在"哪里"写之后我该怎么做.只有列表操作,例如头尾等或?

谁能帮我?

Wil*_*sem 6

哈斯克尔'10报告显示了一个示例程序:

module Main where  
  import A  
  import B  
  main = A.f >> B.f  

module A where  
  f = ...  

module B where  
  f = ...
Run Code Online (Sandbox Code Playgroud)

它相当于以下单模块程序:

module Main where  
  main = af >> bf  

  af = ...  

  bf = ...
Run Code Online (Sandbox Code Playgroud)

where编写import语句,类声明,函数声明等之后.

人们还可以在括号之间写出口列表.这些导出是函数,类,类型,构造函数等.

使用where输入范围是不特定的模块.当我们在a中class定义a 或函数定义的函数时,会发生同样的情况instance.

在您的代码中,您只定义一个merge函数,并且不导入任何内容,因此代码文件可能应该如下所示:

module Merge(merge) where

merge::[a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) = x:y:(merge xs ys)
Run Code Online (Sandbox Code Playgroud)