아래의 함수 createTuple
을 pointfree로 표현할 수 있습니까? 당신이 볼 수 있습니다 만 무엇을 사용하여 createTuple
기능을 쓸 수 있도록튜플을 자유롭게 만들기
let createTuple = fun v -> (v, v*2)
createTuple 2 |> printfn "%A" // (2,4)
아래의 함수 createTuple
을 pointfree로 표현할 수 있습니까? 당신이 볼 수 있습니다 만 무엇을 사용하여 createTuple
기능을 쓸 수 있도록튜플을 자유롭게 만들기
let createTuple = fun v -> (v, v*2)
createTuple 2 |> printfn "%A" // (2,4)
은 F # 라이브러리 (이 F 번호를 작성 특히 관용적 인 방법이 아닌 주로하기 때문에) 지점이없는 스타일로 코드를 작성하기위한 많은 기능을 제공하지 않습니다 핵심 라이브러리. 당신이 정말로이 작업을 수행하고 싶었 경우
, 당신은 튜플 작업을위한 도우미 콤비의 몇 가지를 정의 할 수 있습니다 : 다음으로
/// Duplicates any given value & returns a tuple with two copies of it
let dup a = a, a
/// Transforms the first element using given function
let mapFst f (a, b) = (f a, b)
/// Transforms the second element (not needed here, but adding for symmetry)
let mapSnd f (a, b) = (a, f b)
, 당신은 한 점없는 방식으로 기능을 구현할 수 :
let createTuple = dup >> mapSnd ((*) 2)
이것은 사용자의 기능과 같습니다. 여기서 일어나는 일을 해독하는 것이 상당히 어렵다고 생각하며 실제로 그 코드를 작성하지는 않겠지 만 또 다른 문제가 있습니다.
정확히 내가 원했던 것, 감사합니다! – rickythefox
Haskel/Elm에서와 같이'(,)'연산자를 사용합니까? –