목록의 n 번째 요소에 함수를 적용 할 수 있어야합니다. 예를 들면 다음과 같이 (목록의 n 번째 요소에 함수 적용
doSomething :: (a -> a) -> Int -> [a] -> [a]
doSomething f n xs = ys ++ [f x] ++ zs
where (ys, x:zs) = splitAt (n - 1) xs
하지만 하스켈에 새로운 해요, 그래서 나는 확신 :
> doSomething (+5) 2 [1,2,3,4,5]
내가이 작업을 수행 할 수있는 기능을 가지고 [1,7,3,4,5]
를 반환해야 하스켈의 많은 간단한 함수들)이 작업을 수행하는 훨씬 더 좋은 방법이있다.
렌즈를 살펴보십시오. – jamshidh
렌즈를 들여다 보면 하스켈을 처음 접한 누군가에게 최상의 아이디어가 아닐 수도 있습니다. 나는 네가 여기있는 것이 좋다고 생각한다. 좀 더 효율적인 것을 찾고 있습니까? 더 관용적입니까? 하나의 라이너? –
@jamshidh 나는 렌즈를 빨리 들여다 보았다. 그러나 나는 아직 어떤 패키지없이 이것을 할 수있는 것을 선호한다. – b3036667