1
我一直在四處尋找,也找不到這和我所有的語法的摔跤技術是失敗的例子我嵌套函數。有人可以告訴我如何使這個編譯?我,S,S或.S只是錯了,我想定義一個嵌套函數...二郎語法與如果
我知道有做字符串函數替換已經所以我並不需要實現這一點,但我「M使用Erlang試圖把它撿起來,所以我的手紡一些我需要使用基本的打..
replace(Whole,Old,New) ->
OldLen = length(Old),
ReplaceInit = fun(Next, NewWhole) ->
if
lists:prefix(Old, [Next|NewWhole]) -> {_,Rest} = lists:split(OldLen-1, NewWhole), New ++ Rest;
true -> [Next|NewWhole]
end,
lists:foldr(ReplaceInit, [], Whole).
基本上我想寫這哈斯克爾(也可能是壞的,但超出了點):
repl xs ys zs =
foldr replaceInit [] xs
where
ylen = length ys
replaceInit y newxs
| take ylen (y:newxs) == ys = zs ++ drop (ylen-1) newxs
| otherwise = y:newxs
好吧,'有趣'的結局也缺失了。其實,替代功能應該是做什麼的? – user425720
我剛開始做一個案例,但它遇到了與案例相同的語法錯誤。這給出了相同的語法錯誤。 –
@ user425720替換函數的工作方式如下:replace(「Hello Donut!」,「Donut」,「World」) - >「Hello World!」使用以這種方式工作的foldr的技術起作用,這只是一個讓嵌套函數以某種方式在語法上正確結束的問題。 –