Haskell newbie here. I use ghci
to implement a baby quicksort
algorithm [1] as follows:
Prelude> quicksort (firstx:xs) = quicksort[x|x<-xs, xquicksort [] = []
The command quicksort [1,2,3]
then gives an error:
*** Exception: :8:1-17: Non-exhaustive patterns in function quicksort
However, typing the exact same thing in an quicksort.hs
file and running $ ghci quicksort.hs
do not yield such an error.
What makes the difference? Is it a rule of thumb that one should avoid using interactive mode?
Reference[1] Rex Page. Two Dozen Short Lessons in Haskell
通常,在文件中定义多行函数然后加载:l
或重新加载会更容易:r
,但是有时我确实会在GHCi中直接从:{
和开始声明多行函数:}
:
:{
quicksort (firstx:xs) = quicksort[x|x<-xs, x
:h
如果您在GHCi中忘记了任何命令,则很有用。
编辑:忘记解决您的问题的第二部分。
避免使用交互模式是一种经验法则吗?
交互模式是一个很好的工具,我在其他诸如ReasonML的生态系统中没有使用它。没有理由避免它。如果您想保留一些代码,请记住要复制代码。