在哪里“块”

时间:2013-02-07 22:38:18

标签: haskell

我正在做一个代码块非常相似的程序,我试图在“块”中创建一个位置。 只是一个例子

function "sum" x = x + a
function "product" x = x * a
  where 
    a = 2

我希望在两行中替换'a',但我没有发现是否可以使用

提前致谢

4 个答案:

答案 0 :(得分:7)

如果你真的需要这个,你需要合并两个函数子句。一种方法:

func what x = case what of
        "add" -> x+a
        "mul" -> x*a
    where
       a = 2

答案 1 :(得分:3)

您还可以引入第二个功能:

function fName x = function' fName x
   where
      a = 2
      function' "sum"     x = x + a
      function' "product" x = x * a 

答案 2 :(得分:0)

(原谅我,因为我是新手。)我不认为这是可能的。 where“块”的范围是它定义的函数。但是你可以做的是:

Prelude> let a = 2
Prelude> let sum x = x + a
Prelude> let product x = x * a
Prelude> sum 3
5

这是在GHCi中完成的。您可能会担心所有人可以看到a,但如果这是在.hs文件中,您可以将其设为模块而不导出a,然后仅这些功能可以看到它。

答案 3 :(得分:0)

我认为你可以定义一个新的函数geta

geta=2

然后你可以在任何其他函数中使用geta函数。

我不认为混合每个功能是一个好方法, 也许你将有20个函数需要相同的值