怎么写let程序在哪里?

时间:2016-10-26 08:34:43

标签: haskell

这是Haskell中的一个程序,使用let:

   slope (x1,y1) (x2,y2) = let dy = y2-y1
    dx = x2-x1
    in dy/dx

现在我试着去哪里但是它没有正常工作实际上我无法建立一个分配给你想要为我写的地方:

slope (x1,y1) (x2,y2)
 | x<0 ="wronge input"
 |otherwise ="I don't know what Im doing"
 where x=dy/dx
 dy=(y2-y1)
 dx=(x2-x1)

1 个答案:

答案 0 :(得分:3)

在同一列上缩进x=,dy=,dx=

slope (x1,y1) (x2,y2)
 | x<0      = "wrong input"
 |otherwise = "I don't know what Im doing"
 where x=dy/dx
       dy=(y2-y1)
       dx=(x2-x1)

indentation rule是:在where(和letdocase of之后,第一个非空格(非评论)字词开始一个条目块,所有这些条目必须从该单词的同一列开始。单词上方是x。当然,您可以通过其他方式缩进:例如

slope (x1,y1) (x2,y2)
 | x<0      = "wrong input"
 |otherwise = "I don't know what Im doing"
 where
   x=dy/dx
   dy=(y2-y1)
   dx=(x2-x1)