Отчет Haskell '10 показывает пример программы:
module Main where
import A
import B
main = A.f >> B.f
module A where
f = ...
module B where
f = ...
Это эквивалентно следующей одномодульной программе:
module Main where
main = af >> bf
af = ...
bf = ...
После where
записываются операторы импорта, объявления классов, объявления функций и т. Д.
Можно также написать список экспорта между круглыми скобками. Это экспорт функций, классов, типов, конструкторов и т. Д.
Использование where
для ввода области действия не относится к модулям. То же самое происходит, когда мы определяем функции class
или определения функций в instance
.
В вашем коде вы определяете только функцию merge
и ничего не импортируете, поэтому вполне вероятно, что файл кода должен выглядеть так:
module Merge(<b>merge</b>) where
merge::[a] -> [a] -> [a]
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys) = x:y:(merge xs ys)