【发布时间】:2019-12-19 07:26:46
【问题描述】:
正如标题所说,我想在 do 块之后返回一个值。
示例:编写一个在数组中给定位置插入变量的函数:
insertAt :: a -> Int -> [a] -> [a]
insertAt x n xs = do
let before = take n xs
let after = drop n xs
let merged = before ++ [x] ++ after
in merged
例如:
insertAt 'x' 3 "Aleander" => "亚历山大"
无论如何,当使用单个 let 调用时,可以使用 in 关键字返回一个值,但需要多次调用 let如示例中所示,我收到错误:
错误:输入“in”时解析错误
我知道我可以在一次 let 使用中完成所有操作,但我想知道如何处理多次 let 调用 :)
感谢您的帮助!
【问题讨论】:
-
你根本不需要在这里使用
do。 -
不要在此处不使用
do。do表达式是带有绑定函数的表达式的语法糖。 -
不做我会得到一个错误:输入`let'时解析错误
-
@MuradAlm.: 请不要使用 Voodoo 编程 techopedia.com/definition/22860/voodoo-programming :)
-
@MuradAlm:这不是故意的,如果是这样的话,对不起。可能我解释了“without
doi will get an error: parse error on inputlet”有点错误(如“我没有错误,所以我添加了do).问题说明你很努力,虽然没有完全成功,但已经非常接近正确的结果了。所以我做了+1。:)
标签: haskell functional-programming let