考虑下面的内容是我的代码
import Data.Char
import Data.List
-- square
square :: Int -> Int
square n = n * n
Run Code Online (Sandbox Code Playgroud)
虽然这个方形功能看起来很整洁,但是当我运行它时
ghci ./square.hs
Run Code Online (Sandbox Code Playgroud)
它回来了
[1 of 1] Compiling Main ( ./LabSheet1-solns.hs, interpreted )
./LabSheet1-solns.hs:5:1:
parse error on input `square'
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
我的翻译可能有问题.
我在OS X 10.8.1上运行
$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 7.4.2
Run Code Online (Sandbox Code Playgroud)
任何线索?
我迷失在这个概念中.这是我的代码,它的作用就是询问你的名字是什么.
askName = do
name <- getLine
return ()
main :: IO ()
main = do
putStrLn "Greetings once again. What is your name?"
askName
Run Code Online (Sandbox Code Playgroud)
但是,如何在我main的askName中获取变量名称?
这是我的第二次尝试:
askUserName = do
putStrLn "Hello, what's your name?"
name <- getLine
return name
sayHelloUser name = do
putStrLn ("Hey " ++ name ++ ", you rock!")
main = do
askUserName >>= sayHelloUser
Run Code Online (Sandbox Code Playgroud)
我现在可以name以回调方式重新使用,但是如果在main中我想再次调用name,我该怎么做?(name <- getLine 显然避免放入主体)
这是我的代码:
askPointer = do
input <- getLine
let newInput = map toUpper input
[..here I will re-use new Input..]
return ()
Run Code Online (Sandbox Code Playgroud)
是否可能(可能使用lamba表示法),只在一行中缩短此代码?
我的尝试失败了:
input <- (\a b-> do toUpper (b <- getLine ) )
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑:很少编辑,使这个问题寻找更通用的答案(不限于返回功能)
我的目标是从一段文本中提取所有主题标签并用指令替换它们,这意味着它应该从这个:
<p>Hello #stackoverflow this is a #test<p>
Run Code Online (Sandbox Code Playgroud)
成
<p>Hello <hashtag="stackoverflow"></hashtag> this is a #test<p>
Run Code Online (Sandbox Code Playgroud)
我的想法是使用过滤器用指令html替换hashtag,但我不知道如何显示它,因为ng-bind-html-unsafe显然没有编译指令.
任何提示?
大家好我试图在haskel中重现合并排序,这是我的代码:
-- merge
merge :: (Ord a) => [a] -> [a] -> [a]
merge [] [] = []
merge xs [] = xs
merge [] ys = ys
merge (x:xs) (y:ys)
| x <= y = x:(merge xs (y:ys))
| otherwise = y:(merge (x:xs) ys)
-- split
splitIn2 :: (Ord a) => [a] -> ([a],[a])
splitIn2 [] = ([],[])
splitIn2 xs = splitAt ((length xs `div` 2)+1) xs
-- msort
msort :: (Ord a) => [a] -> [a]
msort [] …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
boolTrueList :: [Bool] -> Bool
boolTrueList xs
| length (filterFalse xs) > 0 = False
| otherwise = True
where
filterFalse = filter (==False)
Run Code Online (Sandbox Code Playgroud)
这是完美的工作,但我想用foldr/foldl重写相同的东西,但我被卡住了.
我的想法是折叠一个列表,直到我找到一个假值,然后停止.任何提示?
这是我的功能.它检查正值,将它们更改为1并对它们求和.
countPositive :: [Integer] -> Integer
countPositive xs = foldr (+) 0 $ map (^0) (filter (>0) xs)
Run Code Online (Sandbox Code Playgroud)
是否有一个更好的策略来计算正值而不使用length,只是foldr,map和filter?
我想知道如何打印完成的迭代次数.我考虑过使用另一个lambda函数,例如(\a succ)失败.
这是我的代码
showit = forM list (\a -> putStr "number:"++HEREWHAT??++" is "++" a"
Run Code Online (Sandbox Code Playgroud) 我有两种类型的单元格,我将使用我的 UITableView,所以我创建了两个具有不同标识符的原型单元格。我手动更改了大小,但是当我编译和运行时,两个单元格的大小相同。
有没有办法通过故事板来做到这一点,而无需每次都检查
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
我至少会有大约 100 个细胞。
更新:在我的情况下,我有一个包含 3 个部分的 tableview,第一个很小,第二个和第三个更大。
有没有办法让我用strlen获取字符串中的最后一个字符?如果没有,我无法理解strlen可以在什么情况下使用.
char buf[256] = "Hello";
char * lastchar = buf[strlen(buf) - 1];
Run Code Online (Sandbox Code Playgroud)
使用它安全吗?
haskell ×7
angularjs ×1
c ×1
ghci ×1
ios ×1
iphone ×1
javascript ×1
list ×1
objective-c ×1
uitableview ×1