1
나는 이것들을 둘러 보았고 이에 대한 예제를 찾을 수 없으며 모든 구문 레슬링 기술에 실패하고 있습니다. 누군가이 컴파일 방법을 알려주실 수 있습니까 ?? 내, s 또는 .s 중첩 된 함수를 정의하는 것 같아요 ...중첩 된 함수에 대한 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
글쎄, '재미'끝도 없습니다. 사실, replace 함수는 무엇을하기로되어 있습니까? – user425720
처음에 사례를 만들었지 만 사례가 실행되고있는 것과 동일한 구문 오류가있었습니다. 동일한 구문 오류가 발생합니다. –
@ user425720 replace 함수는 replace ("Hello Donut!", "Donut", "World") -> "Hello World!"와 같이 작동해야합니다. 이런 식으로 작동하는 foldr를 사용하는 기술이 작동합니다. 어떻게 든 중첩 된 함수를 구문 적으로 올바르게 끝내는 문제입니까? –