เคล็ดลับสำหรับการเล่นกอล์ฟใน OCaml


10

แรงบันดาลใจจากการแบ่งประเภทของ 'เคล็ดลับสำหรับการเล่นกอล์ฟในภาษา xyz' อื่น ๆ ตามปกติโปรดแนะนำเคล็ดลับเฉพาะสำหรับ OCaml และไม่ใช่การเขียนโปรแกรมทั่วไป กรุณาหนึ่งเคล็ดลับต่อคำตอบ


1
ถ้าฉันจะเพิ่มเคล็ดลับที่ชัดเจนบางอย่าง?
Édouard

คำตอบ:


4

ใช้ฟังก์ชั่นแทนการจับคู่

let rec f=function[]->0|_::t->1+f t

สั้นกว่า

let rec f x=match x with[]->0|_::t->1+f t

3

อย่าใช้จุดเริ่มต้น […]

นี้:

begin […] end 

ตรงกันเสมอกับสิ่งนี้:

([…])

2

กำหนดหลายตัวแปรหรือฟังก์ชั่นในครั้งเดียว

ขอบคุณ tuples คุณสามารถกำหนดตัวแปรหลายตัวพร้อมกัน และเนื่องจากฟังก์ชั่นเป็นพลเมืองชั้นหนึ่ง…:

let f,g=(fun x->x+1),fun x->2*x

อย่างไรก็ตามคุณไม่สามารถเขียน:

let f,g=(fun x->x+1),fun x->2*f x

ข้อผิดพลาด: ค่าไม่ถูกต้อง f

น่าเสียดายที่คุณไม่สามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้rec:

let rec f,g=(fun x->x+1),fun x->2*f x

ข้อผิดพลาด: อนุญาตให้ใช้ตัวแปรได้เฉพาะด้านซ้ายของ let rec


2

ใช้ประโยชน์จากฟังก์ชั่นแกง

ฟังก์ชั่นใน OCaml นั้นเป็นแกง มันอาจจะมีประโยชน์ในการใช้ประโยชน์จากข้อเท็จจริงนั้นบางครั้ง

let n y=f x y

สามารถเขียนได้

let n=f x

หากคุณต้องการการดำเนินการทางคณิตศาสตร์คุณสามารถล้อมรอบพวกเขาด้วยวงเล็บเพื่อให้พวกเขาทำตัวเหมือนฟังก์ชั่นมาตรฐานคำนำหน้า (+),, (-)...

let n=(+)1;;
n 3;;

- : int = 4

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.