2011-08-25 14 views
11

चलो कहते हैं कि मैं,

let ($) f1 f2 = f1 (f2) 
के रूप में कुछ इस तरह के लिए इस कोड

let identifier = spaces_surrounded (many1Satisfy isLetter) 

मैं अगर यह वहाँ किसी भी देशी एफ # समारोह है कि मुझे

let identifier = spaces_surrounded $ many1Satisfy isLetter 

है कि करने के लिए यह refactor करने के लिए अनुमति दी थी सोच रहा था करते हैं

(अगर मैं गलत नहीं हूं, तो मेरे हास्केल कौशल बहुत तेज नहीं हैं ..)।

उत्तर

16

इस के लिए मानक एफ # मुहावरा है आगे पाइप ऑपरेटर |> थे आप को फिर से लिखने

let identifier = spaces_surrounded (many1Satisfy isLetter) 

रूप

let identifier = many1Satisfy isLetter |> spaces_surrounded 

आप भी पिछड़े पाइप ऑपरेटर <| उपयोग कर सकते हैं अगर आप को बनाए रखना चाहते हैं मूल आदेश, लेकिन यह थोड़ा कम आम

let identifier = spaces_surrounded <| many1Satisfy isLetter 
+0

हम्म तो ऐसा लगता है <| जिसकी मुझे तलाश थी वह है। इसकी परिभाषा क्या है? –

+5

यह यहां देखा गया है जैसा कि इनलाइन (<|) fx = fx' है: https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/prim-types.fs – Brian

+2

ध्यान दें कि अपने स्वयं के ऑपरेटरों को परिभाषित करने के लिए ला हास्केल सहयोगीता/प्राथमिकता के एफ # नियमों के अधीन है, उदाहरण के लिए http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597402 – Brian

संबंधित मुद्दे