小编pig*_*ack的帖子

简单的haskell程序不能用GHCi编译

考虑下面的内容是我的代码

 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)

任何线索?

haskell ghci

1
推荐指数
2
解决办法
196
查看次数

将变量保存在Haskell中的另一个函数中

我迷失在这个概念中.这是我的代码,它的作用就是询问你的名字是什么.

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 显然避免放入主体)

haskell

1
推荐指数
1
解决办法
484
查看次数

存储在变量(Haskell)之前对用户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)

有什么建议?

编辑:很少编辑,使这个问题寻找更通用的答案(不限于返回功能)

haskell

1
推荐指数
1
解决办法
186
查看次数

Angularjs - 使用ng-bind-html-unsafe的内联指令

我的目标是从一段文本中提取所有主题标签并用指令替换它们,这意味着它应该从这个:

<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显然没有编译指令.

任何提示?

javascript angularjs

1
推荐指数
1
解决办法
1862
查看次数

haskell中的合并排序进入无限循环

大家好我试图在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)

haskell

0
推荐指数
1
解决办法
217
查看次数

如果列表只有True值,则使用foldl返回True,否则返回false

这是我的代码:

boolTrueList :: [Bool] -> Bool
boolTrueList xs
  | length (filterFalse xs) > 0 = False
  | otherwise = True
  where
    filterFalse = filter (==False)
Run Code Online (Sandbox Code Playgroud)

这是完美的工作,但我想用foldr/foldl重写相同的东西,但我被卡住了.

我的想法是折叠一个列表,直到我找到一个假值,然后停止.任何提示?

haskell

0
推荐指数
2
解决办法
626
查看次数

计算正值

这是我的功能.它检查正值,将它们更改为1并对它们求和.

countPositive :: [Integer] -> Integer
countPositive xs = foldr (+) 0 $ map (^0) (filter (>0) xs)
Run Code Online (Sandbox Code Playgroud)

是否有一个更好的策略来计算正值而不使用length,只是foldr,mapfilter

haskell list

0
推荐指数
2
解决办法
1225
查看次数

在Haskell中使用forM打印迭代次数

我想知道如何打印完成的迭代次数.我考虑过使用另一个lambda函数,例如(\a succ)失败.

这是我的代码

showit = forM list (\a -> putStr "number:"++HEREWHAT??++" is "++" a"
Run Code Online (Sandbox Code Playgroud)

haskell

0
推荐指数
1
解决办法
146
查看次数

故事板中具有不同标识符和不同高度的两个 UITableViewCell

我有两种类型的单元格,我将使用我的 UITableView,所以我创建了两个具有不同标识符的原型单元格。我手动更改了大小,但是当我编译和运行时,两个单元格的大小相同。

有没有办法通过故事板来做到这一点,而无需每次都检查

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

我至少会有大约 100 个细胞。

更新:在我的情况下,我有一个包含 3 个部分的 tableview,第一个很小,第二个和第三个更大。

iphone objective-c uitableview ios

0
推荐指数
1
解决办法
1212
查看次数

在C中获取字符串中的最后一个字符时,strlen是否不安全

有没有办法让我用strlen获取字符串中的最后一个字符?如果没有,我无法理解strlen可以在什么情况下使用.

char buf[256] = "Hello";
char * lastchar = buf[strlen(buf) - 1];
Run Code Online (Sandbox Code Playgroud)

使用它安全吗?

c buffer-overflow

0
推荐指数
1
解决办法
4445
查看次数