Haskell의 map 함수에 해당하는 C #은 무엇입니까?


80

Haskell의 map 함수에는 두 개의 입력 매개 변수가 있습니다. 첫 번째 매개 변수는 함수이고 두 번째 매개 변수는 목록입니다. map 함수는 입력 매개 변수로 전달 된 함수를 목록의 모든 요소에 적용하고 새 목록을 반환합니다.

이 기능에 해당하는 C #이 있습니까?


1
F #을 확인하는 것이 좋습니다. C #과 Haskell의 격차를 해소합니다.
— ChaosPandion

3
별로. "OCaml for .NET"에 가깝습니다.
— jrockway

2
모든 ML 계열 언어 (F # 및 Haskell 포함)는 C 계열 언어보다 서로 공통점이 더 많다는 것은 말할 것도 없습니다. F #을 처리 할 수있는 사람은 누구나 Haskell 또는 OCaml도 처리 할 수 ​​있습니다.
— CA McCann

1
@jrockway, @camccann : 저는 언어 구문에 대해 말하는 것이 아닙니다. 나는 F #이 항상 순수한 기능적 스타일을 사용하도록 강요하지 않는다는 사실을 의미합니다.
— ChaosPandion

답변:


94

Select

MSDN 참조

여기 내 질문을 참조 하십시오 (직접 관련이 없기 때문에 궁금한 경우에만).


8
고마워요 ... 이것은 약간 직관적입니다. Select가 컬렉션에서 행을 필터링한다고 생각했습니다.
— BM.

8
내 질문을 확인하시기 바랍니다.
— ChaosPandion

1
BM : 필터링은 Where에서 비롯됩니다.
— Edward KMETT

21

Selectand SelectMany에 대한 또 다른 대안 은 자신의 확장 메서드를 작성하는 것입니다.

public static IEnumerable<U> Map<T, U>(this IEnumerable<T> s, Func<T, U> f)
{
  foreach (var item in s)
    yield return f(item);
}

이 달콤한 확장 방법에 대해 Wes Dyer에게 감사드립니다! :) 자세한 내용은 게시물 을 참조하십시오.


15

이후 Select및 SelectMany: 이미 언급 한, 당신이 요청하지 않은 추가 질문 답변 해 드리겠습니다 fold로 발견된다 집계를 .

이제이 글을 읽는 모든 사람은 Language Y 관용구를 사용하여 Language X를 작성하는 That Guy가 될 수있는 모든 준비를 갖추어야합니다. 따라서 동료 C # 프로그래머를 위해 너무 성급하게 생각하지 마십시오 .


4
이제 camccann, 도구 상자에 기능성 렌치를 던지는 것은 반드시 못을 박는다고해도 문제가 없습니다. 몇 개의 볼트를 조여야 할 수도 있습니다.
— ChaosPandion

4
@camccan Functional C #은 정말 좋습니다. 언어가 엄격하게 작동하지 않는다고해서 대부분의 .net 프로그래머가 훨씬 더 기능적으로 물건을 구축하는 것이 큰 혜택을받지 못한다는 의미는 아닙니다 .

4
C #에서 제공하는 함수형 프로그래밍 기능을 사용하는 것은 좋은 생각입니다. 반면에 C #이 잘 지원되지 않는 기능적 관용구 (예 : Haskell에서 매우 인기있는 커리 부분 응용 프로그램)로 강제 적용하면 두통이 생기고 코드가 난독 화되며 작업해야하는 다른 사람을 괴롭힐 것입니다. 그것으로.
— CA McCann


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.