2010-06-11 5 views
4

멤버 함수를 추출하여 F # 함수로 사용할 수 있습니까? 나는 다음과 같은 쓸 수 있도록하고 싶습니다 : 당신이 [하자] 경우F # : 멤버 함수를 언 바운드 함수로 사용하는 방법은 무엇입니까?

mystring |> string.Split '\n' |> Array.filter (string.Length >> (=) 0 >> not) 

위의 코드는

let mystring = "a c\nb\n" 
let stringSplit (y:char) (x:string) = x.Split(y) 
let stringLength (x:string) = x.Length 
mystring |> stringSplit '\n' |> Array.filter (stringLength >> (=) 0 >> not) 

답변

5

작동이 a question I asked a few days ago 매우 유사하다 (하지만 표현이 더 낫다). 일치는 것 같다 :

  1. 번호
  2. 아마 구문 string#Split, "foo"#Split, 아니면 그냥 #Split (타입 유추가) 향후에 추가 될 예정입니다. 그러나 Tomas가 연계 한 Don Syme's proposal은 2007 년에 나온 것이므로 어쩌면 게으름에 대한 구체적인 구문과 같은 가능성이 있는지 알 수 없습니다.

은 편집 : 나는 추측

"foo"#Splitstring#Split "foo"로 기록 될 수있다. 나는 당신이 # 신택스를 얼마나 유연하게 정의하는지에 달려 있다고 생각한다.

3

지금은 사용

(fun x -> x.Member ...) 

. 예 :

someString |> (fun s -> s.Split "\n") |> ... 
관련 문제