문제

CSV 파일에서 숫자를 가져올 때는 단위로 플로트로 변환해야합니다.

현재 인라인 기능 으로이 작업을 수행합니다.

data |> List.map float |> List.map (fun n -> n * 1.0<m>)

그러나이 작업을 수행하는 더 우아한 방법이 있는지 궁금합니다. 아니면 변환 기능을 갖춘 내 자신의 '단위'모듈을 만들어야합니까?

정말로 좋은 것은 이와 같은 것이지만 가능하다고 의심합니다 ...

data |> List.map float |> List.map lift<m>

이것은 나의 이전 질문과 반대입니다 (F# 단위를 일반적으로 제거하는 방법).

업데이트 : 수제 유닛의 경우, 나는 이것을 시도했는데, 그것은 괜찮습니다.

[<Measure>]
type km = 
    static member lift (v:float) = v * 1.0<km>

data |> List.map float |> List.map km.lift

또는 질문에 따라 이 답변

data |> List.map (float >> km.lift)
도움이 되었습니까?

해결책

측정 단위는 현재 유형 매개 변수가 될 수없는 것처럼 보입니다 (이것이 변경 될지 알 수 없습니다). 그래서 이것을 쓰는 가장 짧은 방법은 다음과 같습니다.

data |> List.map float |> List.map ((*) 1.0<m>)

편집하다

지금 참조하십시오 FloatWithMeasure 여기

http://msdn.microsoft.com/en-us/library/ee806527(vs.100).aspx

다른 팁

두 번 맵핑 해야하는 이유가 있습니까? 이것에 무슨 문제가 있습니까?

data |> List.map (fun x -> (float x) * 1.0<m>)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top