สิ่งนี้ค่อนข้างคลุมเครือ แต่แคลคูลัสปรากฏขึ้นในประเภทข้อมูลเกี่ยวกับพีชคณิต สำหรับประเภทใดก็ตามประเภทของบริบทหนึ่งหลุมเป็นอนุพันธ์ของประเภทนั้น ดูการพูดคุยที่ยอดเยี่ยมนี้เพื่อดูภาพรวมของหัวเรื่องทั้งหมด นี่เป็นคำศัพท์ทางเทคนิคมากดังนั้นให้อธิบาย
ประเภทข้อมูลพีชคณิต
คุณอาจเจอทูเปิลที่ถูกอ้างถึงว่าเป็นประเภทผลิตภัณฑ์ (ถ้าไม่เป็นเพราะพวกมันเป็นผลิตภัณฑ์คาร์ทีเซียนสองประเภท) เราจะใช้สิ่งนี้อย่างแท้จริงและใช้สัญกรณ์:
a∗b
เพื่อเป็นตัวแทนของ tuple โดยที่และเป็นทั้งสองประเภท ถัดไปคุณอาจจะเจอประเภทรวมเหล่านี้เป็นชนิดที่สามารถเป็นได้ทั้งประเภทหนึ่งหรืออื่น (ที่รู้จักกันเป็นสหภาพแรงงาน , สายพันธุ์หรือเป็นทั้งสองชนิด (ครับ) ใน Haskell) เราจะใช้อันนี้อย่างแท้จริงและใช้สัญกรณ์:ab
a+b
สิ่งเหล่านี้ถูกตั้งชื่อเนื่องจากเป็นเพราะประเภทมีค่าและ a ประเภทมีค่าดังนั้นประเภทจะมีค่าaNabNba+bNa+Nb
ประเภทเหล่านี้ดูเหมือนว่าการแสดงออกทางพีชคณิตปกติและในความเป็นจริงเราสามารถจัดการพวกเขาเป็นเช่นนี้ (ไปยังจุด)
ตัวอย่าง
ในภาษาที่ใช้งานได้คำจำกัดความทั่วไปของรายการ (ที่กำหนดใน Haskell ที่นี่) คือ:
data List a = Empty
| Cons a List
สิ่งนี้บอกว่ารายการว่างเปล่าหรือ tuple ของค่าและรายการอื่น การแปลงให้เป็นสัญกรณ์พีชคณิตเราได้:
L(a)=1+a∗L(a)
โดยที่หมายถึงประเภทที่มีหนึ่งค่า (aka ประเภทหน่วย) ด้วยการแทรกซ้ำเราสามารถประเมินสิ่งนี้เพื่อรับนิยามสำหรับ :1L(a)
L(a)=1+a∗L(a)
L(a)=1+a∗(1+a∗L(a))
L(a)=1+a+a2∗(1+a∗L(a))
L(a)=1+a+a2+a3∗(1+a∗L(a))
L(a)=1+a+a2+a3+a4+a5...
(โดยที่มีความหมายในแง่ของการคูณซ้ำ)xn
คำจำกัดความนี้บอกว่ารายการนั้นเป็นหน่วยหรือทูเปิลของหนึ่งไอเท็มหรือทูเปิลของสองไอเท็มหรืออีกสามอย่างซึ่งก็คือคำจำกัดความของรายการ!
บริบทหนึ่งหลุม
ต่อไปนี้กับบริบทแบบหนึ่งหลุม: บริบทแบบหนึ่งหลุมคือสิ่งที่คุณจะได้รับเมื่อคุณ 'นำมูลค่าออกมา' จากประเภทผลิตภัณฑ์ ลองยกตัวอย่าง:
สำหรับการที่ง่าย 2 tuple ซึ่งเป็นเนื้อเดียวกันถ้าเราใช้ค่าออกเราเพิ่งได้รับ 1 tuple, แต่มีบริบทแบบหนึ่งรูที่แตกต่างกันสองประเภท ได้แก่ ค่าแรกและตัวที่สองของ tuple ดังนั้นเพราะมันเป็นอย่างใดอย่างหนึ่งเหล่านี้เราสามารถเขียนว่ามันเป็นซึ่งเป็นของหลักสูตร2aนี่คือสิ่งที่ทำให้เกิดความแตกต่างในการเล่น ขอยืนยันด้วยตัวอย่างอื่น:a2aa+a2a
การรับค่าจาก 3-tuple จะให้ 2-tuple แต่มีตัวแปรที่แตกต่างกันสามแบบ:
( a , _ , a ) ( _ , a , a )
(a,a,_)
(a,_,a)
(_,a,a)
ขึ้นอยู่กับตำแหน่งที่เราวางหลุม นี้จะช่วยให้เราซึ่งเป็นที่แน่นอนที่มาของ 3 มีหลักฐานการนี้โดยทั่วไปจะอยู่ที่นี่a 33a2a3
สำหรับตัวอย่างสุดท้ายของเราลองใช้รายการ:
ถ้าเราใช้นิพจน์ดั้งเดิมของเราสำหรับรายการ:
L(a)=1+a∗L(a)
เราสามารถจัดเรียงใหม่เพื่อรับ:
L(a)=11−a
(บนพื้นผิวนี้อาจดูเหมือนไร้สาระ แต่ถ้าคุณใช้ชุดเทย์เลอร์ของผลลัพธ์นี้คุณจะได้คำจำกัดความที่เราได้รับมาก่อนหน้านี้)
ตอนนี้ถ้าเราแยกความแตกต่างนี้เราจะได้ผลลัพธ์ที่น่าสนใจ:
∂L(a)∂a=(L(a))2
ดังนั้นหนึ่งรายการจึงกลายเป็นคู่ของรายการ ในความเป็นจริงแล้วมันสมเหตุสมผล: รายการทั้งสองที่สร้างนั้นสอดคล้องกับองค์ประกอบด้านบนและด้านล่างของรูในรายการดั้งเดิม!