2013-09-23 30 views
1

我试图编写一个函数removeSpaces,它曾经递过一个字符串,它将删除其中找到的任何空格。
我走到这一步是:功能故障不在范围内:数据构造函数

import Data.Char 
removeSpaces :: [Char] -> [Char] 
removeSpaces [] = [] 
removeSpaces xs = filter isAlpha xs 

然而,这一直给我的消息“并不适用范围:数据构造”与之前和在String内的任何空格后的字符串件。任何帮助,这将是伟大的。

+0

它为我,是你使用的是什么版本什么编译器/解释的什么确切的输出是?另外'removeSpaces“Hello World !! 11!” ==“HelloWorld”,这可能不是你想要的。 –

回答

2

该功能看起来不错,尽管您不需要空列表作为 过滤器处理该情况。

import Data.Char 
removeSpaces :: [Char] -> [Char] 
removeSpaces xs = filter isAlpha xs 

你能给你是如何调用该函数

+0

据我所知,我将这个函数称为removeSpaces“no spaces”,它应该返回nospaces。 – user2807679

+0

您是使用GHCi还是只是在文件中输入'removeSpaces“no spaces”'作为顶级表达式? –

+0

你确定你的字符串上有引号吗? – Alex

1

的一个例子,它工作正常:

$ echo "import Data.Char 
> removeSpaces :: [Char] -> [Char] 
> removeSpaces [] = [] 
> removeSpaces xs = filter isAlpha xs" > so.hs 

$ ghci so.hs 
GHCi, version 7.6.2: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
[1 of 1] Compiling Main    (so.hs, interpreted) 
Ok, modules loaded: Main. 
*Main> removeSpaces "no spaces" 
"nospaces" 
*Main>