ซึ่งดูเหมือนจะเป็นวิธีทางคณิตศาสตร์มากขึ้น
ภาษาที่ใช้งานได้แรงบันดาลใจจากแลมบ์ดาแคลคูลัส ในฟิลด์นี้จะไม่ใช้วงเล็บสำหรับแอปพลิเคชันฟังก์ชัน
ฉันคิดว่าสไตล์หลังมีความชัดเจนและอ่านง่ายกว่าที่ไม่มีการเลียนแบบ
การอ่านอยู่ในสายตาของคนดู คุณไม่คุ้นเคยกับการอ่าน มันเหมือนกับตัวดำเนินการทางคณิตศาสตร์ หากคุณเข้าใจความสัมพันธ์คุณต้องใช้เพียงไม่กี่ parens ในการอธิบายโครงสร้างการแสดงออกของคุณ บ่อยครั้งที่คุณไม่ต้องการพวกเขา
การแกงยังเป็นเหตุผลที่ดีที่จะใช้การประชุมนี้ ใน Haskell คุณสามารถกำหนดสิ่งต่อไปนี้:
add :: Int -> Int -> Int
add x y = x + y
x = add 5 6 -- x == 11
f = add 5
y = f 6 -- y == 11
z = ((add 5) 6) -- explicit parentheses; z == 11
ด้วย parens คุณสามารถใช้สองการประชุม: f(5, 6)
(ไม่ใช่ curried) หรือf(5)(6)
(curried) ไวยากรณ์ haskell ช่วยให้คุ้นเคยกับแนวคิดการปิดกั้น คุณยังสามารถใช้เวอร์ชันที่ไม่ใช่ curated แต่มันเจ็บปวดกว่าที่จะใช้กับ combinators
add' :: (Int, Int) -> Int
add' (x, y) = x + y
u = add'(5, 6) -- just like other languages
l = [1, 2, 3]
l1 = map (add 5) l -- [6, 7, 8]
l2 = map (\x -> add'(5, x)) l -- like other languages
โปรดสังเกตว่ารุ่นที่สองบังคับให้คุณลงทะเบียน x เป็นตัวแปรอย่างไรและ subexpression เป็นฟังก์ชันที่ใช้จำนวนเต็มและเพิ่ม 5 ลงไป เวอร์ชั่น curried นั้นเบากว่ามาก แต่ก็ยังถือว่ามีผู้อ่านให้อ่านมากกว่านี้
โปรแกรม Haskell ใช้งานแอปพลิเคชั่นบางส่วนและคอมบิเนเตอร์อย่างครอบคลุมเพื่อกำหนดและเขียน abstractions ดังนั้นนี่ไม่ใช่ตัวอย่างของเล่น ฟังก์ชั่นอินเทอร์เฟซที่ดีจะเป็นที่ที่ลำดับของพารามิเตอร์ให้การใช้งาน curried ที่เป็นมิตร
จุดอื่น: f()
ฟังก์ชั่นโดยไม่มีพารามิเตอร์ควรจะเรียกว่ามี ใน haskell เนื่องจากคุณจัดการค่าที่ประเมินค่าไม่ได้ของ lazy คุณเพียงแค่เขียนf
และคิดว่ามันเป็นค่าที่จะต้องทำการคำนวณบางอย่างเมื่อจำเป็น เนื่องจากการประเมินผลจะไม่มีผลข้างเคียงใด ๆ จึงไม่มีเหตุผลที่จะมีสัญกรณ์ที่แตกต่างกันสำหรับฟังก์ชั่นไร้พารามิเตอร์และค่าที่ส่งคืน
นอกจากนี้ยังมีข้อกำหนดอื่น ๆ สำหรับแอปพลิเคชันฟังก์ชัน:
- Lisp: (fx) - ส่วนนำหน้าด้วยวงเล็บภายนอก
- ไปมา: xf - postfix