1 00:00:00,000 --> 00:00:05,180 2 00:00:05,180 --> 00:00:05,930 CONNOR HARRIS: สวัสดี 3 00:00:05,930 --> 00:00:06,820 ฉันคอนเนอร์แฮร์ริส 4 00:00:06,820 --> 00:00:09,729 ฉัน CA CS50 ที่ Harvard 5 00:00:09,729 --> 00:00:11,270 สตีเฟน KREWSON: ฉันสตีเฟ่น Krewson 6 00:00:11,270 --> 00:00:12,582 ฉัน TF สำหรับ CS50 ที่เยล 7 00:00:12,582 --> 00:00:15,790 CONNOR HARRIS: และเรากำลังจะพูดคุย เกี่ยวกับเทคโนโลยีบางอย่างที่คุณอาจจะ 8 00:00:15,790 --> 00:00:18,880 ต้องการที่จะใช้ถ้าคุณสนใจ ในการทำโครงการหรือสุดท้ายจริงๆ 9 00:00:18,880 --> 00:00:20,920 อะไรกับเพลง 10 00:00:20,920 --> 00:00:24,400 เรากำลังจะมุ่งเน้นไปในครั้งแรก การเขียนโปรแกรมภาษาที่เรียกว่า Haskell 11 00:00:24,400 --> 00:00:26,280 มันเป็นเรื่องการทำงาน ภาษาดังนั้นกระบวนทัศน์ 12 00:00:26,280 --> 00:00:29,620 จะแตกต่างจาก C หรือ PHP หรือภาษาที่จำเป็นอื่น ๆ 13 00:00:29,620 --> 00:00:33,450 ที่คุณใช้อยู่แล้วและโดยเฉพาะอย่างยิ่ง ห้องสมุดที่เขียนใน Haskell 14 00:00:33,450 --> 00:00:40,240 เรียกว่า Euterpea ซึ่งสามารถช่วยให้ผู้คน กับการเขียนเพลงหน้าที่ 15 00:00:40,240 --> 00:00:40,780 เป็นพื้น 16 00:00:40,780 --> 00:00:43,400 และสตีเฟนจะนำคุณ ผ่านตัวอย่างที่ดีของที่ 17 00:00:43,400 --> 00:00:46,423 >> หลังจากนี้ผมจะแนะนำให้ท่านรู้จัก สิ่งที่เรียกว่า LillyPond ซึ่ง 18 00:00:46,423 --> 00:00:48,370 เป็นเทคโนโลยีสำหรับการฟังเพลงเรียงพิมพ์ 19 00:00:48,370 --> 00:00:50,830 มันเป็นประเภทเช่นน้ำยาง สำหรับการฟังเพลงถ้าใด ๆ ของคุณ 20 00:00:50,830 --> 00:00:57,530 มีการใช้น้ำยางสำหรับการเรียนคณิตศาสตร์หรือ เรียนชุด P อื่น ๆ หรือสิ่งที่มีคุณ 21 00:00:57,530 --> 00:01:00,440 และดังนั้นผมจึงจะให้คุณอีกครั้ง ตัวอย่างบางส่วนที่เรียบง่ายของที่ 22 00:01:00,440 --> 00:01:03,640 และชี้ให้คุณโดยทั่วไป ทิศทางของทรัพยากรที่ดีกว่า 23 00:01:03,640 --> 00:01:04,319 >> สตีเฟน KREWSON: ใน นอกจากนี้เราคิดว่ามัน 24 00:01:04,319 --> 00:01:06,720 จะเย็นในการตั้งค่า นิด ๆ หน่อย ๆ ของคำแนะนำ 25 00:01:06,720 --> 00:01:10,780 ต่อท่อระหว่าง Euterpea สร้างไฟล์ MIDI 26 00:01:10,780 --> 00:01:13,910 ใน LillyPond ดังนั้นเราจึงให้ การเรียนการสอนบางอย่างเกี่ยวกับสคริป 27 00:01:13,910 --> 00:01:16,310 จะทำอย่างนั้นที่มี ให้กับ LillyPond 28 00:01:16,310 --> 00:01:19,160 เพียงเพื่อให้มันเปิดแหล่งที่มา และได้รับท่อไป 29 00:01:19,160 --> 00:01:20,910 CONNOR HARRIS: อีกครั้ง เราควรเน้น 30 00:01:20,910 --> 00:01:23,100 ทั้งสองเทคโนโลยีคุณ จะได้ไม่ต้องใช้พวกเขาร่วมกัน 31 00:01:23,100 --> 00:01:25,370 พวกเขาไม่ได้ออกแบบมาเพื่อทำงาน ร่วมกันแม้ว่าพวกเขาจะทำอย่างมาก 32 00:01:25,370 --> 00:01:26,362 >> สตีเฟน KREWSON: ขวา 33 00:01:26,362 --> 00:01:30,116 และฟรี 34 00:01:30,116 --> 00:01:32,240 CONNOR HARRIS: ดังนั้น กิตติกรรมประกาศอ่านเพียงว่า 35 00:01:32,240 --> 00:01:33,406 สตีเฟน KREWSON: รับรองสำเนาถูกต้องตั้งข้อสังเกต 36 00:01:33,406 --> 00:01:36,360 ขอบคุณที่คนเหล่านั้น 37 00:01:36,360 --> 00:01:39,180 นี้ฉันจะอิทธิพลในเพียงชั่วครู่ 38 00:01:39,180 --> 00:01:41,560 กระบวนการติดตั้ง เป็นเล็กน้อยหากิน 39 00:01:41,560 --> 00:01:45,420 เราได้อ่านฉันใน GitHub ที่คุณสามารถดูที่ 40 00:01:45,420 --> 00:01:47,840 เพียงแค่ส่งอีเมลฉันหากคุณมีคำถามใด ๆ 41 00:01:47,840 --> 00:01:52,829 แต่เราจะทำงานนี้ภายใต้สมมติฐาน ว่านี่คือการทำงานสำหรับทุกคน 42 00:01:52,829 --> 00:01:55,620 CONNOR HARRIS: และถ้าคุณไม่สามารถ ได้รับ LillyPond ในการทำงานไม่ใช่เรื่องใหญ่ 43 00:01:55,620 --> 00:02:00,139 ไม่มีการรวบรวมการถ่ายทอดสดที่ จะมีส่วนร่วมอย่างน้อยในส่วนของฉัน 44 00:02:00,139 --> 00:02:02,930 สตีเฟน KREWSON: Haskell และ LillyPond ควรติดตั้งทั้งสองมี 45 00:02:02,930 --> 00:02:08,497 Euterpea ถูกดาวน์โหลดเป็น แพคเกจอื่น ๆ และอื่น ๆ 46 00:02:08,497 --> 00:02:10,080 ดังนั้นเรากำลังพูดถึงเพลงคอมพิวเตอร์ 47 00:02:10,080 --> 00:02:12,990 และนี่เป็นเพียง มุมมอง 50,000 ฟุตมาก 48 00:02:12,990 --> 00:02:15,700 มีแง่มุมที่แตกต่างกันไม่กี่ของมัน 49 00:02:15,700 --> 00:02:18,120 และนี่คือหยาบและเป็น จะปิดบังรายละเอียดบาง 50 00:02:18,120 --> 00:02:22,090 แต่เราอาจจะคิดว่าสิ่งที่ เช่นองค์ประกอบอัลกอริทึม 51 00:02:22,090 --> 00:02:24,920 โดยใช้อัลกอริทึม โดยใช้รหัสในการสร้าง 52 00:02:24,920 --> 00:02:30,280 บางชนิดอาจจะ of-- ตัวเองที่คล้ายกัน ลำดับของการบันทึกหรืออาจจะบันทึก 53 00:02:30,280 --> 00:02:33,330 ภายใต้ข้อ จำกัด บางอย่าง 54 00:02:33,330 --> 00:02:35,350 และแล้วผู้ที่อาจจะ การดำเนินการหรือการตีความ 55 00:02:35,350 --> 00:02:38,390 ด้วยเครื่องมือแบบอะนาล็อก หรืออะไรอย่างนั้น 56 00:02:38,390 --> 00:02:42,010 แต่องค์ประกอบคือ ทำอัลกอริทึม 57 00:02:42,010 --> 00:02:45,120 >> แต่แน่นอนอาจจะเป็นพื้นที่ของ เพลงคอมพิวเตอร์หรือเพลงดิจิตอล 58 00:02:45,120 --> 00:02:48,870 เราคุ้นเคยกับดิจิตอล การสังเคราะห์เสียงหรือการสุ่มตัวอย่างแบบดิจิตอล 59 00:02:48,870 --> 00:02:51,160 และการบันทึกแบบดิจิตอล 60 00:02:51,160 --> 00:02:55,650 จำนวนมากของเครื่องมือดิจิตอล ดำเนินการผ่านการสุ่มตัวอย่างแบบดิจิตอล 61 00:02:55,650 --> 00:03:00,110 ในความเป็นจริงเราจะใช้หนึ่งในผู้ที่อยู่ใน รูปแบบของห้องสมุดเสียงตัวอักษรในภายหลัง 62 00:03:00,110 --> 00:03:02,850 >> แต่ยังมีบางสิ่งบางอย่างที่เรียกว่า การสังเคราะห์ดิจิตอลที่ออกมา 63 00:03:02,850 --> 00:03:08,650 ของยุค 70 และเข้าไปใน 'ช่วงปลายยุค 80 ด้วย ยามาฮ่าและจอห์น Chowning ที่ Stanford 64 00:03:08,650 --> 00:03:11,990 ทำสังเคราะห์เอฟเอ็มหรือ ความถี่ในการสังเคราะห์ Modulation, 65 00:03:11,990 --> 00:03:15,100 ที่คุณมีให้บริการ สัญญาณและสัญญาณเลต 66 00:03:15,100 --> 00:03:18,270 ทั้งในคลื่นความถี่เสียง 67 00:03:18,270 --> 00:03:22,570 แต่สิ่งที่เรากำลังมุ่งเน้นไปที่ ในวันนี้คือสิ่งที่เรียกว่า MIDI, 68 00:03:22,570 --> 00:03:25,040 และแน่นอนองค์ประกอบอัลกอริทึม 69 00:03:25,040 --> 00:03:30,940 >> เราไม่ได้จะทำให้เครื่องมือ แต่ เรากำลังแทนจะทำให้บางเพลง, 70 00:03:30,940 --> 00:03:33,940 แล้วที่จะได้รับการตีความ โดยตราสารบางอย่างที่ 71 00:03:33,940 --> 00:03:38,300 มีความสอดคล้องกับ MIDI มาตรฐานทั่วไป 72 00:03:38,300 --> 00:03:40,830 ดังนั้นสิ่งที่เป็น MIDI? 73 00:03:40,830 --> 00:03:45,550 ฉันไม่ได้ไปรับลึกเกินไปในนั้น แต่ MIDI เป็นโปรโตคอลการถ่ายโอนข้อมูล 74 00:03:45,550 --> 00:03:49,250 เป็นชนิดของคู่มือข้าม บริษัท ที่แตกต่างกันและอุตสาหกรรม 75 00:03:49,250 --> 00:03:52,250 สำหรับการจัดระเบียบเสียงหรือแพทช์ 76 00:03:52,250 --> 00:03:54,170 ดังนั้นเราจะเห็นว่า มีมาตรฐาน MIDI 77 00:03:54,170 --> 00:03:57,500 สำหรับทุกกระทบที่แตกต่างกัน เสียงและคำแนะนำ MIDI 78 00:03:57,500 --> 00:04:01,360 สำหรับทุกชนิดที่แตกต่างกันของ synth หรือ ชนิดที่แตกต่างของทุกตราสาร 79 00:04:01,360 --> 00:04:03,650 กลุ่มในวงออเคสตรากล่าวว่า 80 00:04:03,650 --> 00:04:08,916 >> คุณอาจคุ้นเคยกับ 0 ถึง 127 ข้อความ MIDI 81 00:04:08,916 --> 00:04:12,920 สัญญาณ MIDI เป็นปกติ หนึ่งบิตที่ระบุ 82 00:04:12,920 --> 00:04:16,130 ไม่ว่าจะเป็นข้อมูลหรือเป็น แพ็คเก็ตสถานะและจากนั้นยังมี 83 00:04:16,130 --> 00:04:18,589 เจ็ดบิตของสัญญาณ 84 00:04:18,589 --> 00:04:21,430 และสิ่งเหล่านี้สามารถควบคุม ทุกอย่างจากปริมาณ 85 00:04:21,430 --> 00:04:25,330 กับการกระทำหรือความดัน ในคีย์โดยเฉพาะอย่างยิ่ง 86 00:04:25,330 --> 00:04:29,400 ถ้าคุณกำลังปฏิบัติกับเสียง MIDI ควบคุมเช่นเดียวกับของหลักสูตร 87 00:04:29,400 --> 00:04:31,250 บันทึก 88 00:04:31,250 --> 00:04:33,450 และแน่นอนมี MIDI รับประโยชน์อย่างมาก 89 00:04:33,450 --> 00:04:37,550 เพราะเป็นวิธีที่จะสาย ด้วยกันหรือโซ่เดซี่ 90 00:04:37,550 --> 00:04:41,570 พวงของอุปกรณ์ฮาร์ดแวร์ MIDI 91 00:04:41,570 --> 00:04:44,050 ฉันมีเจ็ดหรือแปดกลับมาที่บ้านของฉัน 92 00:04:44,050 --> 00:04:46,610 จะได้รับความซับซ้อนจริงๆ แต่ก็มีประสิทธิภาพจริงๆ 93 00:04:46,610 --> 00:04:47,460 และมันเก่าจริงๆ 94 00:04:47,460 --> 00:04:51,117 มันมาจากยุค 80 ต้นและ มันเป็นเรื่องดีจริงๆและขนาดเล็ก 95 00:04:51,117 --> 00:04:51,950 CONNOR HARRIS: ใช่ 96 00:04:51,950 --> 00:04:54,230 ทั้งหมดที่นินเทนคลาสสิก วิดีโอเกมอาจจะ 97 00:04:54,230 --> 00:04:56,088 มีไฟล์ MIDI สำหรับการฟังเพลงตัวอย่างเช่น 98 00:04:56,088 --> 00:04:59,550 99 00:04:59,550 --> 00:05:01,740 >> สตีเฟน KREWSON: ที่นี่เป็น ตัวอย่างของ MIDI ทั่วไป 100 00:05:01,740 --> 00:05:06,520 แสดง MIDI เป็นชนิด โปรโตคอลทั่วไป 101 00:05:06,520 --> 00:05:13,280 และผมคิดว่าเราสามารถคิดของ ความแตกต่างระหว่างสเปค 102 00:05:13,280 --> 00:05:17,830 ว่าควรจะมีสิ่งที่ต้องการ เครื่องมือเหล่านี้และเสียงที่เกิดขึ้นจริง 103 00:05:17,830 --> 00:05:21,740 สำนึกของเครื่องมือเหล่านั้นเสียง ในตัวอักษรเสียงหรือ MIDI โดยเฉพาะอย่างยิ่ง 104 00:05:21,740 --> 00:05:25,740 สังเคราะห์เป็นความแตกต่าง ระหว่างบางที typeface-- ซึ่งบอกว่าเป็น 105 00:05:25,740 --> 00:05:30,350 โดยทั่วไปนี้คือการออกแบบของ วิธีนี้โดยเฉพาะอย่างยิ่งที่จะเป็นตัวแทน 106 00:05:30,350 --> 00:05:35,907 characters-- และตัวอักษรโดยเฉพาะอย่างยิ่ง ที่มีขนาดที่เฉพาะเจาะจงและต่ำ, 107 00:05:35,907 --> 00:05:37,240 และมีสำนึกของ the-- 108 00:05:37,240 --> 00:05:39,156 >> CONNOR HARRIS: บางที ดีกว่าที่จะเปรียบเทียบ 109 00:05:39,156 --> 00:05:43,430 เป็นมาตรฐาน Unicode says-- มันจะช่วยให้ จำนวนที่จะทุกตัวอักษรและจริงๆ 110 00:05:43,430 --> 00:05:46,830 ทุกภาษาในโลกหรือ ชุดใหญ่ของสคริปของภาษา 111 00:05:46,830 --> 00:05:51,310 ในโลกและจากนั้นผู้ที่มี แสดงผลเป็นสิ่งที่กราฟิก 112 00:05:51,310 --> 00:05:53,710 โดยแพคเกจตัวอักษรต่างๆ 113 00:05:53,710 --> 00:05:56,630 และเห็นได้ชัดว่าคุณสามารถคิด MIDI เป็น Unicode ของเสียง 114 00:05:56,630 --> 00:06:03,250 และมันก็เป็นเพียงรายการ of-- กระแสใหญ่ ของเหตุการณ์และเครื่องมือและ whatnot, 115 00:06:03,250 --> 00:06:06,090 และคุณจะต้องมีการแยกจากกัน โปรแกรมเช่นอักษรที่ 116 00:06:06,090 --> 00:06:08,537 ในการแสดงผลที่เป็น สิ่งที่ได้ยิน 117 00:06:08,537 --> 00:06:12,360 118 00:06:12,360 --> 00:06:13,780 >> สตีเฟน KREWSON: Haskell ดังนั้นทำไม? 119 00:06:13,780 --> 00:06:19,110 Haskell เป็นโปรแกรมการทำงาน ภาษาสูงมาก 120 00:06:19,110 --> 00:06:22,770 แตกต่างจากซี แตกต่างจาก PHP 121 00:06:22,770 --> 00:06:28,120 และเรากำลังจะไปดูว่ามี ความสะดวกในการทำงานขององค์ประกอบใน Haskell 122 00:06:28,120 --> 00:06:37,640 ที่จะช่วยให้เราสามารถสายลมผ่าน การเขียนหรือพิมพ์ขึ้นถ่ายทอด, 123 00:06:37,640 --> 00:06:42,160 สิ่งที่ต้องการ Frere ฌาคส์ เพลงนี้ง่ายๆที่ 124 00:06:42,160 --> 00:06:46,815 มีจำนวนมากของชิ้นส่วนในนั้นที่ ได้ด้วยตนเองที่คล้ายกันหรือการทำซ้ำ 125 00:06:46,815 --> 00:06:49,740 126 00:06:49,740 --> 00:06:53,250 ดังนั้นนี่จะเป็นบางส่วนของ แรงจูงใจสำหรับเหตุผลที่ 127 00:06:53,250 --> 00:06:59,400 เรากำลังใช้ Haskell ซึ่ง ฟังก์ชั่นเป็นพลเมืองชั้นแรก 128 00:06:59,400 --> 00:07:01,120 >> และฉันต้องการที่จะขยาย นี้นิด ๆ หน่อย ๆ 129 00:07:01,120 --> 00:07:08,800 มันนิด ๆ หน่อย ๆ ที่ง่ายต่อการ notate Frere ฌาคส์ใน Haskell 130 00:07:08,800 --> 00:07:12,100 แต่ถ้าเราต้องการที่จะ เพิ่มส่วนกลองไปได้หรือไม่ 131 00:07:12,100 --> 00:07:17,320 เกิดอะไรขึ้นถ้าเราต้องการที่จะพยายามที่จะทำให้ สิ่งที่ต้องการ Roland 808 หรือ 909 กลอง 132 00:07:17,320 --> 00:07:20,970 เครื่องที่คุณมี ประมาณ 16 ขั้นตอนที่แตกต่างกัน? 133 00:07:20,970 --> 00:07:24,590 เหล่านี้มักจะมี ความคิดของการเป็นบันทึกที่ 16 134 00:07:24,590 --> 00:07:28,640 และคุณสามารถควบคุมโลก จังหวะและคุณสามารถเลือกออก 135 00:07:28,640 --> 00:07:34,620 พวงของชิ้นส่วนที่แตกต่างกันกระทบ กลองเบสตบมือเป็นบ่วงที่แตกต่างกัน 136 00:07:34,620 --> 00:07:37,540 หมวกสูงเปิดและปิด ในการจัดเรียงช่องทางเหล่านี้ 137 00:07:37,540 --> 00:07:41,600 และจากนั้นคุณสามารถ EQ หรือ ปรับระดับเสียงของพวกเขา 138 00:07:41,600 --> 00:07:45,290 >> และเราจะเห็นวิธีที่ดีในการ Haskell เป็นตัวแทนของขั้นตอนนี้ 139 00:07:45,290 --> 00:07:48,810 ซีเควนกับทุก สิ่งดีๆที่ต่าง ๆ ใน Haskell 140 00:07:48,810 --> 00:07:53,100 เราสามารถทำอะไรกับการสร้าง รายการและการกรองมากกว่ารายการ 141 00:07:53,100 --> 00:07:56,060 การทำแผนที่มากกว่ารายการการทำแผนที่ ฟังก์ชั่นในช่วงรายการ 142 00:07:56,060 --> 00:07:59,530 143 00:07:59,530 --> 00:08:00,760 และขอโทษอย่างรวดเร็ว 144 00:08:00,760 --> 00:08:05,300 นี่คือคร่าวๆมาก และร่างอย่างรวดเร็วเกินไป 145 00:08:05,300 --> 00:08:07,620 ของบางแง่มุม ของ Haskell และ Euterpea, 146 00:08:07,620 --> 00:08:11,760 ซึ่งเป็นโดเมนเฉพาะ ฝังภาษาเขียน 147 00:08:11,760 --> 00:08:14,970 ใน Haskell ชนิดดนตรี 148 00:08:14,970 --> 00:08:17,350 ดังนั้นโปรดอย่าตรวจสอบรหัสออนไลน์ 149 00:08:17,350 --> 00:08:22,404 ไฟขึ้น GHCI ซึ่งเป็นกลาสโกว์ คอมไพเลอร์ Haskell ล่าม 150 00:08:22,404 --> 00:08:24,320 และผมจะทำบางอย่าง ในเรื่องนี้นิด ๆ หน่อย ๆ 151 00:08:24,320 --> 00:08:25,880 เพื่อให้คุณสามารถดูวิธีการที่จะทำ 152 00:08:25,880 --> 00:08:31,021 >> และสิ่งนี้ช่วยให้คุณโหลดด้วย the-- ไวยากรณ์ลำไส้ใหญ่แล้ว 153 00:08:31,021 --> 00:08:31,520 คำสั่ง 154 00:08:31,520 --> 00:08:33,510 คุณสามารถโหลดไฟล์ 155 00:08:33,510 --> 00:08:36,840 คุณสามารถใช้ในการดูไฟล์เหล่านั้น เพื่อดูฟังก์ชั่นทั้งหมดที่ 156 00:08:36,840 --> 00:08:39,169 อยู่ในโมดูลโดยเฉพาะอย่างยิ่ง 157 00:08:39,169 --> 00:08:43,850 และแล้วในขณะที่เราจะเห็นชนิดและประเภท เรียนจึงมีความสำคัญใน Haskell, 158 00:08:43,850 --> 00:08:48,850 เพื่อให้คุณสามารถ check-- โดยเฉพาะอย่างยิ่ง ถ้าคุณกำลังทำงานใน DSCL ใหม่ 159 00:08:48,850 --> 00:08:51,600 เช่นนี้สิ่งที่เป็นประเภทเพลงหรือไม่? 160 00:08:51,600 --> 00:08:55,114 ฉันรู้เกี่ยวกับวิธีการที่ตัวเลข ประเภททำงานใน Haskell, 161 00:08:55,114 --> 00:08:56,530 แต่ผมไม่ได้รู้มากเกี่ยวกับเพลง 162 00:08:56,530 --> 00:09:01,280 แต่คุณสามารถสำรวจวิธีที่พวกเขากำลัง ที่กำหนดโดยใช้คำสั่งหรือเสื้อประเภทนี้ 163 00:09:01,280 --> 00:09:04,577 แล้วโทรโดยเฉพาะอย่างยิ่ง ฟังก์ชั่นหรือวัตถุข้อมูล 164 00:09:04,577 --> 00:09:05,410 CONNOR HARRIS: ใช่ 165 00:09:05,410 --> 00:09:09,820 ถ้าคุณคิดว่าซีและเสียงดังกราว เป็น hardass เกี่ยวกับประเภท 166 00:09:09,820 --> 00:09:11,230 คุณมีความคิดเกี่ยวกับ Haskell ไม่มี 167 00:09:11,230 --> 00:09:14,230 สิ่งที่ดีเกี่ยว Haskell คือว่า ถ้าคุณได้รับรหัสของคุณที่จะรวบรวม 168 00:09:14,230 --> 00:09:16,790 และถ้า Haskell การตรวจสอบชนิด มันอาจจะถูกต้อง 169 00:09:16,790 --> 00:09:18,675 เนื่องจากระบบการพิมพ์เป็นที่เข้มงวดเพื่อให้ 170 00:09:18,675 --> 00:09:20,090 >> สตีเฟน KREWSON: ใช่ 171 00:09:20,090 --> 00:09:21,980 ดังนั้นฉันเพียงแค่ต้องการที่จะไป through-- และอีกครั้ง 172 00:09:21,980 --> 00:09:27,160 นี้ไม่ได้ทำมัน justice-- ไม่กี่ คุณสมบัติของ Haskell ที่อย่างน้อย 173 00:09:27,160 --> 00:09:31,780 เพื่อ creators-- และมันถูกสร้างขึ้น ในช่วงปลายทศวรรษที่ 1980 โดยพวงของคน 174 00:09:31,780 --> 00:09:34,610 คณะกรรมการประมาณ 20 people-- คิดว่ามีความสำคัญ 175 00:09:34,610 --> 00:09:36,850 และสิ่งแรกที่พวกเขา ที่ระบุไว้ในกระดาษว่า 176 00:09:36,850 --> 00:09:41,890 อธิบายกำเนิดของ Haskell ในช่วงแรก 20 ปีหรือมากกว่านั้น 177 00:09:41,890 --> 00:09:43,390 คือการที่มันขี้เกียจ 178 00:09:43,390 --> 00:09:44,990 ดังนั้นสิ่งนี้หมายความว่าอย่างไร? 179 00:09:44,990 --> 00:09:49,860 >> ดีก็หมายความว่าเมื่อเรามีบางชนิด การแสดงออกของเราต้องประเมิน 180 00:09:49,860 --> 00:09:54,390 และ Haskell ไม่นี้ในการเรียก โดยวิธีการหรือความจำเป็นในทางที่ไม่เข้มงวด 181 00:09:54,390 --> 00:09:57,250 นั่นคือถ้าเรามีพวงของ องค์ประกอบของการแสดงออกของเรา 182 00:09:57,250 --> 00:10:00,660 เราพยายามที่จะชะลอการประเมินผล ของส่วนประกอบย่อยเหล่านั้น 183 00:10:00,660 --> 00:10:05,300 จนสุดท้ายแน่นอน minute-- ที่จริงจนกว่าเราต้องการพวกเขา 184 00:10:05,300 --> 00:10:08,480 >> ดังนั้น means-- นี้ซึ่งเป็น เย็นจริงๆโดยเฉพาะอย่างยิ่ง 185 00:10:08,480 --> 00:10:13,200 ถ้าเรากำลังคิดเกี่ยวกับนามธรรม ขั้นตอนของซีเควนดนตรี 186 00:10:13,200 --> 00:10:16,740 คุณเปิดและคุณเริ่มต้น ทำงาน sequence-- ขั้นตอน 187 00:10:16,740 --> 00:10:20,010 ถ้าคุณเคยทำงานร่วมกับกลอง machine-- และมันก็ไปตลอดกาล 188 00:10:20,010 --> 00:10:24,650 ดังนั้นมันจะเป็นสิ่งที่ดีจริงๆถ้าเรา สามารถเลียนแบบว่าใน Haskell 189 00:10:24,650 --> 00:10:31,040 และเราสามารถทำมันได้ด้วยไม่มีที่สิ้นสุด ค่านิยมในรายการที่ไม่มีที่สิ้นสุดโดยเฉพาะอย่างยิ่ง 190 00:10:31,040 --> 00:10:35,860 มันเป็นเรื่องง่ายมากที่จะพิมพ์ รายการที่ไม่มีที่สิ้นสุดใน Haskell 191 00:10:35,860 --> 00:10:39,230 คุณก็สามารถใช้ไวยากรณ์ลง ที่นี่ที่คุณเห็นที่ 1 ถึง 3 192 00:10:39,230 --> 00:10:42,440 ลบ 3 จุด 1 จุดและ ว่าเป็นรายการที่ไม่มีที่สิ้นสุด 193 00:10:42,440 --> 00:10:46,960 ของทุกจำนวนธรรมชาติขยาย บนเท่าที่คุณสามารถจินตนาการ 194 00:10:46,960 --> 00:10:49,925 >> ฉันต้องการที่จะแนะนำ แนวคิดของการพับทันที 195 00:10:49,925 --> 00:10:51,800 และอีกครั้งวัตถุประสงค์ การสัมมนานี้ไม่ได้ 196 00:10:51,800 --> 00:10:55,770 เรียนรู้เกี่ยวกับการพับกระดาษใน Haskell หรือสูงกว่าฟังก์ชั่นการสั่งซื้อ 197 00:10:55,770 --> 00:10:59,640 แต่ผมแค่อยากจะแนะนำให้มัน ให้ความรู้สึกที่ถูกต้องของวิธีการที่แปลก 198 00:10:59,640 --> 00:11:03,700 Haskell และวิธีการที่มีประสิทธิภาพเป็น 199 00:11:03,700 --> 00:11:08,000 และโดยเฉพาะอย่างยิ่งที่เรากำลังจะ be-- เมื่อเราทำชิ้นส่วนกลองที่แตกต่างกันของเรา 200 00:11:08,000 --> 00:11:12,790 เรากำลังจะได้รับการจัดการรายชื่อของ ตัวเลขพับพวกเขาไปยังแต่ละอื่น ๆ 201 00:11:12,790 --> 00:11:17,290 และจะทำอย่างไรที่เราจะ จะมีการใช้แผนที่และเท่า 202 00:11:17,290 --> 00:11:21,770 >> มีความเชื่อมโยงที่เหมาะสมเป็น พับซึ่งเป็นหนึ่งที่เหมาะสมนี้ 203 00:11:21,770 --> 00:11:26,990 here-- 1 ลบปริมาณ 2 ลบปริมาณ 3 ลบ 0 204 00:11:26,990 --> 00:11:29,170 และไวยากรณ์ที่ เท่าที่คุณให้พับ 205 00:11:29,170 --> 00:11:34,680 ค่าฐานแล้ว operation-- ในกรณีนี้นอกจากนี้หรือลบ 206 00:11:34,680 --> 00:11:36,280 ผมได้แสดงให้เห็นว่าทั้งสองกรณี 207 00:11:36,280 --> 00:11:41,760 แล้วมีสะสมที่ สะสมมากกว่ารายการทั้งหมด 208 00:11:41,760 --> 00:11:46,330 ใช้ประกอบการบวกหรือ ลบแล้วมันสะสม 209 00:11:46,330 --> 00:11:52,680 ดังนั้นนี้จะเป็น the-- ถ้ามันถูกเรียกว่า เท่าที่มีอาร์บวก 0, เริ่มต้นด้วย 0, 210 00:11:52,680 --> 00:11:54,720 เราก็จะสรุปทั้งหมด ตัวเลขในรายการว่า 211 00:11:54,720 --> 00:11:57,134 และนั่นคือรายการ 1-3 212 00:11:57,134 --> 00:12:00,050 CONNOR HARRIS: ดังนั้นจะนำมันอีก ทางอาเท่าใช้เวลาสามข้อโต้แย้ง 213 00:12:00,050 --> 00:12:02,540 ที่มีฟังก์ชั่นเป็น ตัวเองจะใช้เวลาสองข้อโต้แย้ง 214 00:12:02,540 --> 00:12:05,400 แล้วมีค่าเริ่มต้น, และมีรายการค่า 215 00:12:05,400 --> 00:12:08,570 และสิ่งที่คุณทำคือการที่คุณจะใช้ ค่าเริ่มต้นค่าแรก 216 00:12:08,570 --> 00:12:09,850 ใส่ไว้ในฟังก์ชั่น 217 00:12:09,850 --> 00:12:11,607 สิ่งที่คุณได้รับการออก ใช้เวลาที่อาหารที่ 218 00:12:11,607 --> 00:12:13,940 ในการทำงานของ ค่าที่สองสิ่งที่คุณได้รับการออก 219 00:12:13,940 --> 00:12:16,690 ใช้เวลาที่ให้อาหารที่เข้ามาใน ฟังก์ชั่นของมูลค่าที่สาม 220 00:12:16,690 --> 00:12:18,740 และแล้วถ้าคุณลงไป รายการนี​​้ทั้งวิธีนี้ 221 00:12:18,740 --> 00:12:22,970 คุณกำลังจะได้รับในที่สุด บางค่าเอกพจน์ที่ 222 00:12:22,970 --> 00:12:25,720 ประเภทเดียวกันของสิ่งที่คุณเริ่มต้น ออกมาด้วยและประเภทเดียวกัน 223 00:12:25,720 --> 00:12:29,147 เป็นสิ่งที่อยู่ในรายชื่อแล้ว ที่ผลการกลับมาของอาร์พับ 224 00:12:29,147 --> 00:12:31,980 สตีเฟน KREWSON: ดังนั้นโดยเฉพาะอย่างยิ่ง เหล่านี้เป็นฟังก์ชั่นที่สูงกว่าการสั่งซื้อ 225 00:12:31,980 --> 00:12:34,460 เพราะพวกเขากำลังการอื่น ฟังก์ชั่นเป็นหนึ่งในข้อโต้แย้ง 226 00:12:34,460 --> 00:12:34,770 >> CONNOR HARRIS: ใช่ 227 00:12:34,770 --> 00:12:37,820 หากคุณเคยใช้บางอื่น ๆ languages​​-- ฉันรู้ว่า R, [ไม่ได้ยิน] 228 00:12:37,820 --> 00:12:41,510 ภาษาได้นี้เรียกว่าลด 229 00:12:41,510 --> 00:12:45,460 คุณอาจจะมีฟังก์ชั่นที่คล้ายกัน ในภาษาอื่น ๆ ที่เรียกว่าเพียงแค่ 230 00:12:45,460 --> 00:12:48,160 สิ่งที่แตกต่าง. 231 00:12:48,160 --> 00:12:50,680 >> สตีเฟน KREWSON: และ สิ่งที่ดีเกี่ยวกับการพับ R 232 00:12:50,680 --> 00:12:53,880 ในกรณีนี้คือเท่าที่ R สามารถทำงานร่วมกับรายการที่ไม่มีที่สิ้นสุด 233 00:12:53,880 --> 00:12:59,490 ดังนั้นในด้านล่างนี้ P5 นี้ มีการสร้างบันทึกที่ 234 00:12:59,490 --> 00:13:03,120 จะเปิดในซีเควนขั้นตอนสำหรับ ส่วนกลองบางส่วนกลองที่ห้า 235 00:13:03,120 --> 00:13:05,480 และอาจจะเป็นคอง กลองหรือสิ่งที่ 236 00:13:05,480 --> 00:13:09,719 และนี่คือจงใจ วิธีการเขียนป้านนี้ 237 00:13:09,719 --> 00:13:11,510 แต่มันก็สนุกเพราะ มันแสดงให้เห็นจำนวนมาก 238 00:13:11,510 --> 00:13:14,460 ของสิ่งที่เกี่ยวกับ Haskell และ Euterpea 239 00:13:14,460 --> 00:13:20,650 >> ดังนั้นพับ R ของลำไส้ใหญ่ colon-- นี้ เพียงแค่ผู้ประกอบการที่ผลักดันสิ่ง 240 00:13:20,650 --> 00:13:25,700 ร่วมกันใน list-- ที่เรียกว่าเมื่อวันที่ว่างเปล่า รายชื่อซึ่งเป็นเพียงวงเล็บที่ว่างเปล่า 241 00:13:25,700 --> 00:13:28,250 และฉันเรียกว่า ในรายการนี​​้ไม่มีที่สิ้นสุด 242 00:13:28,250 --> 00:13:31,570 นี้เป็นจริงทั้งสองรายการ มารวมกันที่นี่ 243 00:13:31,570 --> 00:13:37,150 รายการ 1 จุลภาค 6 จุด จุดคือ 1, 6, 11, 16 244 00:13:37,150 --> 00:13:39,750 ดังนั้นในเวลาเพียง Haskell-- ตัวอักษรไม่กี่คุณ 245 00:13:39,750 --> 00:13:42,420 สามารถสร้างทั้งหมด ลำดับของตัวเลข 246 00:13:42,420 --> 00:13:46,240 ที่มีห้าตัวเลขออกจากกัน ยืดเข้าไปในอินฟินิตี้ 247 00:13:46,240 --> 00:13:49,860 และฉันย่อหน้าที่ นี้ list-- เล็กน้อยสั้น 248 00:13:49,860 --> 00:13:54,370 3, 8, 21-- เพียงเพื่อแสดงให้คุณเห็น วิธีที่คุณสามารถเชื่อมรายการ 249 00:13:54,370 --> 00:13:55,790 >> และจากนั้นผมได้พับกับตัวเอง 250 00:13:55,790 --> 00:14:01,510 และสิ้นสุดขึ้นนี้เป็นเพียงชนิดของ การดำเนินงานที่เป็นตัวตน แต่ก็ไม่มีที่สิ้นสุด 251 00:14:01,510 --> 00:14:06,070 และพับ R สามารถทำเช่นนั้นเพราะ ซมประเมินในขณะที่ดังกล่าวข้างต้น 252 00:14:06,070 --> 00:14:10,582 ถ้าเรามี 1 และ 2 และ 3 ที่เราสามารถทำได้ เพียงแค่ยึดออกจากส่วนที่เหลือทั้งหมดของมัน 253 00:14:10,582 --> 00:14:12,290 ที่จะไม่ทำงานสำหรับ ลบหรือบวก แต่มัน 254 00:14:12,290 --> 00:14:17,760 จะทำงานให้ลำไส้ใหญ่นี้ การดำเนินงานที่เป็นตัวตนอยู่ในรายชื่อ 255 00:14:17,760 --> 00:14:24,620 >> ดังนั้นวิธีที่เราใช้ในทางปฏิบัติว่าถ้าเรา มีรายชื่อยาวอนันต์สิ่ง? 256 00:14:24,620 --> 00:14:26,500 ดี Haskell ให้ จำนวนมากของ functions-- 257 00:14:26,500 --> 00:14:29,450 และมองมากยิ่งขึ้นในเหล่านี้ใน time-- ของคุณเองเช่นการใช้ 258 00:14:29,450 --> 00:14:32,200 ซึ่งบอกว่าตกลงเรา การสร้างรายการที่ไม่มีที่สิ้นสุดนี้ 259 00:14:32,200 --> 00:14:35,950 แต่เรากำลังจะใช้เวลาบางส่วน จำนวนมันและใน case-- นี้ 260 00:14:35,950 --> 00:14:38,410 เราจะเห็นในภายหลัง กลองเครื่องของเรา code-- 261 00:14:38,410 --> 00:14:43,740 จีเอ็มเป็นเพียงชนิดของทั่วโลกบาง ตัวแปรสำหรับจำนวนของขั้นตอน 262 00:14:43,740 --> 00:14:44,610 ในซีเควนเซอร์ 263 00:14:44,610 --> 00:14:47,630 ในม้วนในเครื่องผม แสดงให้เห็นว่าคุณที่มักจะ 16 264 00:14:47,630 --> 00:14:51,475 แต่ผมได้ดำเนินการกับ 32 265 00:14:51,475 --> 00:14:54,470 มันไม่สำคัญว่าจริงๆ 266 00:14:54,470 --> 00:15:00,230 >> Haskell ยังเป็นที่บริสุทธิ์จึงมีความแข็งแรง การพิมพ์แบบคงที่คอนเนอร์พูดพาดพิงถึง 267 00:15:00,230 --> 00:15:03,220 เพื่อให้มีฟังก์ชั่น ทางคณิตศาสตร์ใน sense-- 268 00:15:03,220 --> 00:15:06,600 พวกเขากำลังทางคณิตศาสตร์มากขึ้น ว่าพวกเขาจะรับประกัน 269 00:15:06,600 --> 00:15:11,530 จะไม่สามารถเข้าถึงหรือเปลี่ยนชนิดของใด ๆ ตัวแปรหรือดำเนินการป้อนข้อมูลหรือออก 270 00:15:11,530 --> 00:15:14,420 ดังนั้นถ้าคุณมีฟังก์ชั่น มันกำหนด 271 00:15:14,420 --> 00:15:17,400 มันก็จะกลับมาเหมือนเดิม ค่าในรัฐของโปรแกรม 272 00:15:17,400 --> 00:15:19,310 หรือยังคงเหมือนเดิม 273 00:15:19,310 --> 00:15:22,940 มีแน่นอนข้อยกเว้นเอก นี้ แต่ที่เกินขอบเขตของเรา 274 00:15:22,940 --> 00:15:23,900 >> CONNOR HARRIS: ใช่ 275 00:15:23,900 --> 00:15:26,946 สิ่งนี้หมายความว่าแม้จะมี ไม่กี่สำคัญ [ไม่ได้ยิน] 276 00:15:26,946 --> 00:15:27,820 ผลกระทบจากการนี​​้ 277 00:15:27,820 --> 00:15:30,940 หนึ่งคือการที่มันเป็นเรื่องง่ายมากที่จะ คู่ขนานโปรแกรม Haskell 278 00:15:30,940 --> 00:15:32,773 เพราะถ้าคุณมี กล่าวว่าการทำงานของว่า 279 00:15:32,773 --> 00:15:36,064 ที่ต้องดำเนินการในล้านค่าถ้า คุณรู้ไหมว่าฟังก์ชั่นจะเสมอ 280 00:15:36,064 --> 00:15:39,280 ให้ออกค่าเดียวกันถ้า คุณฟีดที่ value-- บางอย่าง 281 00:15:39,280 --> 00:15:43,055 ถ้าคุณ [ไม่ได้ยิน] ฉ 1, ฉของ 2 จากนั้นเอฟ 3 หรือ whatnot-- ฉ 1 282 00:15:43,055 --> 00:15:45,180 จะไม่เขียนออก ไปยังแฟ้มหรือทำอะไรบางอย่าง 283 00:15:45,180 --> 00:15:46,850 ที่จะปรับเปลี่ยนค่าของ f2 284 00:15:46,850 --> 00:15:50,220 คุณก็สามารถแยกฟังก์ชั่นนี้ให้ ล้านเครื่องที่แตกต่างหรือเป็นล้าน 285 00:15:50,220 --> 00:15:54,720 หัวข้อที่แตกต่างกันหรืออะไรก็ตาม ขอคำทั้งหมดกลับ 286 00:15:54,720 --> 00:15:56,900 ได้รับทั้งหมดค่าผลตอบแทน กลับมาแล้วที่มัน 287 00:15:56,900 --> 00:15:59,780 ดังนั้นง่ายมากที่จะคู่ขนานสิ่ง 288 00:15:59,780 --> 00:16:03,140 >> ข้อเสียคือการป้อนข้อมูลที่ โดยเฉพาะอย่างยิ่งการส่งออกและ 289 00:16:03,140 --> 00:16:05,720 พอดีกับระบบการพิมพ์ ในรูปแบบที่ซับซ้อนมาก 290 00:16:05,720 --> 00:16:09,010 เราจะไม่ไปในที่ที่เหมาะสมในขณะนี้ แต่ฉัน ขอแนะนำให้คุณมองไปที่ทรัพยากรบางอย่าง 291 00:16:09,010 --> 00:16:11,175 ออนไลน์ถ้าคุณต้องการที่จะเรียนรู้เกี่ยวกับการที่ 292 00:16:11,175 --> 00:16:13,960 293 00:16:13,960 --> 00:16:16,550 >> สตีเฟน KREWSON: ดังนั้น พิมพ์ classes-- นี้ 294 00:16:16,550 --> 00:16:21,610 เรียน was-- ประเภท ถูกคิดค้นขึ้นเพื่อแก้ปัญหา 295 00:16:21,610 --> 00:16:24,160 ปัญหาของการดำเนินงาน 296 00:16:24,160 --> 00:16:27,590 ดังนั้นเราจึงต้องการที่จะมีความเท่าเทียมกัน ระหว่างประเภทที่แตกต่างกันของสิ่งที่ 297 00:16:27,590 --> 00:16:31,040 แน่นอนเราสามารถคิด of-- ความเท่าเทียมกันระหว่างชนิดของตัวเลข 298 00:16:31,040 --> 00:16:34,720 เป็นเรื่องง่ายมากที่จะคิดเกี่ยวกับ แต่ สิ่งที่เกี่ยวกับความเท่าเทียมกันระหว่างรายการ? 299 00:16:34,720 --> 00:16:37,610 สิ่งที่เกี่ยวกับความเท่าเทียมกันระหว่าง โครงสร้างข้อมูลขาต้นไม้? 300 00:16:37,610 --> 00:16:43,130 และนี่คือทั้งหมดที่เป็นไปได้ใน Haskell เพราะเรียนประเภท 301 00:16:43,130 --> 00:16:48,000 >> ดังนั้นถ้าคุณกำหนดข้อมูลบาง type-- และนี่คือเหล่านี้เป็นโหมโรงดนตรี 302 00:16:48,000 --> 00:16:50,960 เราที่สุดที่ได้รับ บางเพลงคอมพิวเตอร์ 303 00:16:50,960 --> 00:16:57,420 ดังนั้นเราจึงมี C, C คม และอื่น ๆ และอื่น ๆ. 304 00:16:57,420 --> 00:17:01,080 พวกเขาอยู่ในกลุ่มของ การเรียนแตกต่างกันประเภท 305 00:17:01,080 --> 00:17:03,510 EQ-- พวกเขาอยู่ในชั้นประเภท EQ 306 00:17:03,510 --> 00:17:06,780 นั่นหมายความว่าพวกเขาสนับสนุน การดำเนินงานที่เท่าเทียมกัน 307 00:17:06,780 --> 00:17:12,650 เพื่อให้คุณสามารถประเมินว่าหนึ่ง ลำดับของวิทยาการดนตรี 308 00:17:12,650 --> 00:17:15,400 เป็นเช่นเดียวกับแตกต่างกันหนึ่ง 309 00:17:15,400 --> 00:17:17,280 >> พวกเขาอยู่ในลำดับชั้น 310 00:17:17,280 --> 00:17:19,479 นั่นหมายความว่ามีการสั่งซื้อสินค้าเหล่านี้ 311 00:17:19,479 --> 00:17:27,670 D มาหลังจากซีซีชาร์ป มาหลังจาก C เช่นกัน 312 00:17:27,670 --> 00:17:29,840 พวกเขาอยู่ในชั้นเรียน แสดงซึ่งหมายความว่าพวกเขาสามารถ 313 00:17:29,840 --> 00:17:33,000 จะพิมพ์ไปยังคอนโซลหรือขั้ว 314 00:17:33,000 --> 00:17:36,090 พวกเขาอยู่ใน ระดับแจกแจงซึ่ง 315 00:17:36,090 --> 00:17:39,770 หมายความว่าถึงแม้ เหล่านี้เป็นตัวอักษร 316 00:17:39,770 --> 00:17:45,340 พวกเขามีพื้นฐานที่เป็นตัวเลข การแสดงเริ่มต้นที่ 0 317 00:17:45,340 --> 00:17:48,960 และจะออกผ่าน แต่ หลายสิ่งหลายอย่างอยู่ที่นี่ 20 หรือมากกว่านั้น 318 00:17:48,960 --> 00:17:51,770 หรือ 30 หรือ 40 อาจจะ 319 00:17:51,770 --> 00:17:54,259 >> CONNOR HARRIS: และเมื่อ เรามีชนิดข้อมูล 320 00:17:54,259 --> 00:17:57,050 ที่ derives-- กับคำว่า "deriving--" ชั้นชนิดบาง 321 00:17:57,050 --> 00:18:01,160 ก็หมายความว่าคอมไพเลอร์จะพยายาม ที่จะสร้างบางสิ่งบางอย่างโดยอัตโนมัติ 322 00:18:01,160 --> 00:18:05,120 ดังนั้นบางทีคุณอาจจะต้องการที่จะ กำหนดคุณภาพที่แตกต่างกัน 323 00:18:05,120 --> 00:18:09,450 คุณจะต้องการที่จะกำหนดซีชาร์ป เท่ากับ D แบนเช่น 324 00:18:09,450 --> 00:18:11,560 ด้วยการก่อสร้างนี้ ที่นี่ผมไม่คิดว่าซีชาร์ป 325 00:18:11,560 --> 00:18:14,940 และ D แบนจะเท่ากับเพราะ คอมไพเลอร์จะโดยอัตโนมัติ 326 00:18:14,940 --> 00:18:19,670 บอกทุกค่าที่แตกต่างกันไปได้ ที่แตกต่างจากทุกอื่น ๆ 327 00:18:19,670 --> 00:18:22,930 >> ดังนั้นจึงเป็นไปได้ที่จะแทนที่ การใช้งานเริ่มต้น 328 00:18:22,930 --> 00:18:25,730 ประเภทนี้ของชั้นเรียน 329 00:18:25,730 --> 00:18:28,640 อีกครั้งดูที่การอ้างอิงถ้า คุณต้องการที่จะเรียนรู้เกี่ยวกับการที่ 330 00:18:28,640 --> 00:18:31,767 331 00:18:31,767 --> 00:18:33,600 สตีเฟน KREWSON: และ ที่นี่จริงนี้จะ 332 00:18:33,600 --> 00:18:36,930 จะเป็นประโยชน์สำหรับเมื่อเรารหัสต่อมา 333 00:18:36,930 --> 00:18:42,150 เราเห็นบางส่วนของผู้ประกอบการมัด สำหรับองค์ประกอบลำดับ 334 00:18:42,150 --> 00:18:46,570 องค์ประกอบขนานและอื่น ๆ มาบวกเหล่านี้และเครื่องหมายเท่ากับ 335 00:18:46,570 --> 00:18:48,620 ล้อมรอบด้วยทวิภาค 336 00:18:48,620 --> 00:18:53,330 นั่นหมายความว่าเราสามารถเล่นที่แตกต่างกันเหล่านี้ วิทยาการดนตรีหนึ่งหลังจากที่อื่น 337 00:18:53,330 --> 00:18:54,590 นั่นเป็นองค์ประกอบตามลำดับ 338 00:18:54,590 --> 00:18:57,170 >> หรือเราสามารถเล่นกับพวกเขาใน ขนานในเวลาเดียวกัน 339 00:18:57,170 --> 00:19:05,100 ดังนั้นผมจึงสามารถมีค่าดนตรี แล้วนี้เท่ากับและทวิภาค 340 00:19:05,100 --> 00:19:09,669 มัดประกอบองค์ประกอบขนาน และเล่นเป็นชนิดของคอร์ด 341 00:19:09,669 --> 00:19:11,460 และเรากำลังจะใช้ นี้เมื่อเรารวม 342 00:19:11,460 --> 00:19:15,080 ส่วนกลองของเรากับของเรา Frere เล็ก ๆ น้อย ๆ เพลงฌาคส์ 343 00:19:15,080 --> 00:19:19,460 การเล่นทั้งสองลำดับของ ค่าดนตรีในเวลาเดียวกัน 344 00:19:19,460 --> 00:19:24,520 345 00:19:24,520 --> 00:19:29,250 >> ความดีความชอบ is-- แกงเป็นคนสุดท้าย ชื่อของ Haskell แกงที่ 346 00:19:29,250 --> 00:19:31,850 ภาพ Haskell ตั้งชื่อตาม 347 00:19:31,850 --> 00:19:34,330 และนี้จะช่วยให้เรา ความสง่างามมีความสุขเมื่อเราอยู่ 348 00:19:34,330 --> 00:19:36,880 เขียนเหล่านี้แตกต่างกัน ฟังก์ชั่นหรือตัวกรองว่าเรา 349 00:19:36,880 --> 00:19:39,330 ไปได้มากกว่าการทำแผนที่รายการของเรา 350 00:19:39,330 --> 00:19:42,810 ฟังก์ชั่นของทั้งสอง arguments-- ฉของ x และ y-- 351 00:19:42,810 --> 00:19:46,630 สามารถแสดงเป็น ฉของ x y ที่นำไปใช้ 352 00:19:46,630 --> 00:19:49,800 ดังนั้นจึงเป็นหน้าที่ของ อาร์กิวเมนต์หนึ่งที่ส่งกลับ 353 00:19:49,800 --> 00:19:51,240 ฟังก์ชั่นของการโต้เถียงอีก 354 00:19:51,240 --> 00:19:56,962 ดังนั้นนี่หมายความว่าเราสามารถแมป ฟังก์ชั่นของ x ฉมากกว่ารายการของปี 355 00:19:56,962 --> 00:19:58,920 CONNOR HARRIS: ต้องการ ให้เช่นนี้? 356 00:19:58,920 --> 00:19:59,836 สตีเฟน KREWSON: ใช่ 357 00:19:59,836 --> 00:20:05,390 ผมมีตัวอย่างจากที่นี่ บางสิ่งที่เราจะเขียน 358 00:20:05,390 --> 00:20:10,500 ดังนั้น 2-- ซ้ำกัน ซ้ำจะใช้เวลา 359 00:20:10,500 --> 00:20:13,040 หนึ่งค่าซึ่งเป็นวิธีการที่หลาย ครั้งที่จะทำซ้ำบางสิ่งบางอย่าง 360 00:20:13,040 --> 00:20:16,690 และจากนั้นก็จะใช้เวลา value-- มักรายการหรือบางสิ่งบางอย่าง 361 00:20:16,690 --> 00:20:23,450 ดังนั้นที่นี่เราทำแผนที่ ทำซ้ำ 2 มากกว่ารายการอื่น 362 00:20:23,450 --> 00:20:27,440 >> ดังนั้นหากเราแผนที่ทำซ้ำ 2 ถ้าเราใช้ทำซ้ำ 2 363 00:20:27,440 --> 00:20:31,890 ไปยังองค์ประกอบแรกของ list-- นี้และ เหล่านี้เป็นรายชื่อของ phrases-- ดนตรี 364 00:20:31,890 --> 00:20:37,650 จะผลิตสองของ "คุณ sleeping--" เพื่อให้คุณนอนหลับคุณนอนหลับ 365 00:20:37,650 --> 00:20:40,040 ดังนั้นตอนนี้เรามีสอง 366 00:20:40,040 --> 00:20:42,570 แต่จะใช้เวลาสองซ้ำ ข้อโต้แย้ง แต่เพราะเรา 367 00:20:42,570 --> 00:20:47,100 ความดีความชอบแล้วการทำแผนที่ เราสามารถเป็นตัวแทนทำซ้ำ 2 368 00:20:47,100 --> 00:20:52,310 ในฐานะที่ได้รับกลับมาเป็นหน้าที่ของ หนึ่ง argument-- เพียงการจำลองเป็นครั้งที่สอง 369 00:20:52,310 --> 00:20:57,010 และจากนั้นเราจะใช้ที่แต่ละ องค์ประกอบของรายการของวลีนี้ 370 00:20:57,010 --> 00:21:01,900 >> และ concat เป็น Haskell การดำเนินงานแฟบรายการ 371 00:21:01,900 --> 00:21:04,400 เพราะจะทำซ้ำ 2 ผลิตรายการของรายการ 372 00:21:04,400 --> 00:21:06,660 และนี่คือรูปแบบกลางที่นี่ 373 00:21:06,660 --> 00:21:10,365 และอื่น ๆ แล้วเราสามารถ concat หรือที่แผ่ออกมาเป็นครั้งที่สอง 374 00:21:10,365 --> 00:21:12,240 CONNOR HARRIS: เป็นที่เรียบง่าย ตัวอย่างของ currying, 375 00:21:12,240 --> 00:21:15,323 ถ้าคุณต้องการ like-- ฉจินตนาการเป็นเพียง ฟังก์ชั่นที่ใช้เวลาคูณสอง 376 00:21:15,323 --> 00:21:16,840 ข้อโต้แย้งและส่งกลับผลิตภัณฑ์ของพวกเขา 377 00:21:16,840 --> 00:21:19,320 ดังนั้นถ้าคุณมีฉ 4 5 ก็ 20 378 00:21:19,320 --> 00:21:22,670 แต่คุณสามารถคิดว่านี้เป็น also-- คุณมีฟังก์ชั่นเอฟ 4 379 00:21:22,670 --> 00:21:25,560 ที่จะเกิดการโต้แย้งและผลตอบแทน สี่ครั้ง argument-- เพียงแค่นี้ 380 00:21:25,560 --> 00:21:27,870 แอพลิเคชันบางส่วนที่ เพียงหนึ่งอาร์กิวเมนต์ 4 381 00:21:27,870 --> 00:21:31,182 และถ้าคุณกินอาหารฉ 4 5 ที่จะให้คุณ 20 382 00:21:31,182 --> 00:21:32,890 และที่เป็นที่เรียบง่าย ตัวอย่างของ currying 383 00:21:32,890 --> 00:21:34,473 ก็มักจะเป็นหนึ่งในคนที่ตำราเรียน 384 00:21:34,473 --> 00:21:38,860 385 00:21:38,860 --> 00:21:42,110 >> สตีเฟน KREWSON: แลมบ์ดา การแสดงออกหรือฟังก์ชั่นที่ไม่ระบุชื่อ 386 00:21:42,110 --> 00:21:47,330 เป็นอีกจุดเด่น Haskell 387 00:21:47,330 --> 00:21:51,242 ดังนั้นหากเราจำเป็นต้องชักขึ้น ชีวิตการทำงานเล็ก ๆ น้อย ๆ ทำซ้ำ, 388 00:21:51,242 --> 00:21:52,950 แต่บอกว่ามันไม่ได้อยู่ใน ห้องสมุดมาตรฐาน 389 00:21:52,950 --> 00:21:56,150 เราสามารถใช้ไวยากรณ์ คล้ายกับต่อไปนี้ 390 00:21:56,150 --> 00:21:58,730 และเราจะสายลมมากกว่านี้ 391 00:21:58,730 --> 00:22:02,160 สิ่งหนึ่งที่คุณจะเห็นจำนวนมากในการ เครื่องกลองที่เรากำลังการโทร 392 00:22:02,160 --> 00:22:05,790 เพื่อสิ่งที่เรียกว่า กรองซึ่งเหมือนก่อน 393 00:22:05,790 --> 00:22:08,185 คือการทำแผนที่ของฟังก์ชัน มากกว่ารายการ แต่ก็ 394 00:22:08,185 --> 00:22:10,260 การทำแผนที่ของฟังก์ชั่นบูลีน 395 00:22:10,260 --> 00:22:13,390 >> ดังนั้นเราได้ที่นี่ตัวอย่าง ของหนึ่งโดยไม่ระบุชื่อ 396 00:22:13,390 --> 00:22:19,150 กำหนดฟังก์ชั่นบูลีนที่ ใช้เวลาเพียงไม่กี่ค่า 397 00:22:19,150 --> 00:22:22,990 นี้ไม่ได้พูดอย่างเคร่งครัด ที่ไม่ระบุชื่อฟังก์ชั่น 398 00:22:22,990 --> 00:22:25,850 แต่มันเป็นเรื่องที่มีการกำหนด ไวยากรณ์ที่กะทัดรัด 399 00:22:25,850 --> 00:22:28,007 และใช้เวลาเพียงโมดูล x n-- 400 00:22:28,007 --> 00:22:28,840 CONNOR HARRIS: ใช่ 401 00:22:28,840 --> 00:22:31,330 ดังนั้นฉเป็นหน้าที่ของ สองอาร์กิวเมนต์ n p และ 402 00:22:31,330 --> 00:22:35,440 ที่ส่งกลับฟังก์ชันที่ตัวเองเป็น ฟังก์ชั่นหนึ่งอาร์กิวเมนต์คือ x 403 00:22:35,440 --> 00:22:38,815 404 00:22:38,815 --> 00:22:40,690 สตีเฟน KREWSON: ฉัน ผู้ประกอบการดังกล่าวมัด 405 00:22:40,690 --> 00:22:42,642 สิ่งที่ผู้ประกอบการมัด? 406 00:22:42,642 --> 00:22:45,710 ดีผู้ประกอบการมัดเป็น ปกติเราเป็นตัวแทนของการดำเนินงาน 407 00:22:45,710 --> 00:22:49,910 พูดใน mathematics-- 2 บวก 2 แทนของผู้ประกอบการบวก 408 00:22:49,910 --> 00:22:51,202 แล้วสองอาร์กิวเมนต์ที่ 2 และ 2 409 00:22:51,202 --> 00:22:53,701 CONNOR HARRIS: มันเรียกว่า โน้ตโปแลนด์ย้อนกลับซึ่งเป็น 410 00:22:53,701 --> 00:22:55,330 ระยะฉันสงสัยใด ๆ ของคุณจะได้รู้ว่า 411 00:22:55,330 --> 00:22:56,288 >> สตีเฟน KREWSON: ขวา 412 00:22:56,288 --> 00:22:58,290 ขัดย้อนกลับหรือสัญกรณ์คำนำหน้า 413 00:22:58,290 --> 00:23:01,412 แต่ Haskell ตัดสินใจที่จะ ใช้ประกอบการมัด 414 00:23:01,412 --> 00:23:03,120 ดังนั้นเหล่านี้คือบางส่วนของ คนกำหนดเองที่ 415 00:23:03,120 --> 00:23:07,770 มีการกำหนดไว้สำหรับ Euterpea DSCL ใน Haskell 416 00:23:07,770 --> 00:23:10,730 ดังนั้นนี้คือองค์ประกอบตามลำดับ 417 00:23:10,730 --> 00:23:16,340 นี่คือองค์ประกอบขนานนี้ ถูกตัดทอนองค์ประกอบขนาน 418 00:23:16,340 --> 00:23:18,710 และเราจะต้องว่า กับกลองเครื่องของเรา 419 00:23:18,710 --> 00:23:22,640 เพราะเราจะใช้ที่ผ่านมา ผู้ประกอบการในการที่มี tuple เล็ก ๆ น้อย ๆ 420 00:23:22,640 --> 00:23:26,330 การเล่นกลองเครื่องพร้อม กับเพลงของเรา Frere ฌาคส์ 421 00:23:26,330 --> 00:23:28,650 และกลองเครื่องของเราคือ ไปได้ไม่มีที่สิ้นสุด 422 00:23:28,650 --> 00:23:30,920 มันก็เล่นไปตลอดกาล 423 00:23:30,920 --> 00:23:32,692 แต่เพลง Frere ฌาคส์ไม่ได้ 424 00:23:32,692 --> 00:23:33,510 มันไม่ได้มานานแล้วว่า 425 00:23:33,510 --> 00:23:36,610 มันเป็นเพียงไม่กี่บาร์ 426 00:23:36,610 --> 00:23:43,030 ดังนั้นเราจึงจำเป็นต้องหยุดเครื่องเคาะเป็น เร็วที่สุดเท่าที่มูลค่าดนตรีสั้นมา 427 00:23:43,030 --> 00:23:43,700 ถึงจุดสิ้นสุด 428 00:23:43,700 --> 00:23:46,980 และผู้ประกอบการที่ infixed เป็นซุปเปอร์ประโยชน์กับว่า 429 00:23:46,980 --> 00:23:50,090 >> และสัญกรณ์มัดเช่น นี้เป็นชนิดที่ดีของ 430 00:23:50,090 --> 00:23:57,095 เพราะบอกว่าคุณมีฟังก์ชั่นเหมือน อ้างซึ่งจะช่วยให้การแบ่งจำนวนเต็ม 431 00:23:57,095 --> 00:24:01,010 ของ x โดยบางสิ่งบางอย่าง else-- ขออภัยที่ควรจะเป็นและ b 432 00:24:01,010 --> 00:24:04,740 คุณสามารถเขียนเป็นคำพูดของข 433 00:24:04,740 --> 00:24:09,670 ดังนั้นหากคุณเป็นองค์ประกอบ put-- ตัวอย่างนี้อีก 434 00:24:09,670 --> 00:24:14,730 x องค์ประกอบในรายการบางอย่างถ้าคุณใส่ ใน Backticks คุณสามารถใช้มัน 435 00:24:14,730 --> 00:24:20,400 แม้ว่าจะไม่ได้เป็นสัญลักษณ์ เช่นบวกหรือลบหรือครั้ง 436 00:24:20,400 --> 00:24:24,630 คุณสามารถใช้ชื่อของที่ ฟังก์ชั่นเช่นเดียวกับที่ใน Backticks 437 00:24:24,630 --> 00:24:27,045 เป็นผู้ประกอบการมัดซึ่งเป็นเย็นสวย 438 00:24:27,045 --> 00:24:29,670 CONNOR HARRIS: อีกครั้งนี้เป็น ทั้งหมดน้ำตาลประโยคเพียงจริงๆ 439 00:24:29,670 --> 00:24:32,310 มันไม่ได้ส่งผลกระทบต่อหลักของภาษา 440 00:24:32,310 --> 00:24:37,440 >> สตีเฟน KREWSON: ดังนั้นเราจะเห็นที่นี่เพื่อ วลีสุดท้ายของเพลงของพวกเรา Frere ฌาคส์ 441 00:24:37,440 --> 00:24:45,740 ผมเล่นคอร์ดเล็ก ๆ น้อย ๆ บางส่วนหรือ สามโดยใช้องค์ประกอบขนาน 442 00:24:45,740 --> 00:24:46,240 ผู้ประกอบการ 443 00:24:46,240 --> 00:24:50,680 444 00:24:50,680 --> 00:24:54,950 นี่คือวิธีที่บอกบางอย่างอื่น ของสิ่งที่เราได้รับเพียงแค่บอกว่า 445 00:24:54,950 --> 00:24:59,986 เพื่อให้คุณสามารถฟังก์ชั่นแผนที่ หนึ่งอาร์กิวเมนต์มากกว่ารายการ 446 00:24:59,986 --> 00:25:02,860 CONNOR HARRIS: อีกครั้งอ้างอิง สำหรับตำราเบื้องต้น Haskell-- 447 00:25:02,860 --> 00:25:04,680 จะมีทั้งหมดนี้อยู่ในนั้น 448 00:25:04,680 --> 00:25:07,790 >> สตีเฟน KREWSON: ดังนั้นนี่คือสวย สายสำคัญของขั้นตอนที่ซีเควนเซอร์ 449 00:25:07,790 --> 00:25:12,820 เราจะดูที่การใช้ ความเข้าใจในรายชื่อ 450 00:25:12,820 --> 00:25:17,810 และเราจะเห็นที่นี่คือองค์ประกอบที่ ในการประกอบการถาวรในเครื่องหมายคำพูดกลับ 451 00:25:17,810 --> 00:25:23,030 ดังนั้นถ้า x เป็นองค์ประกอบของรายการที่ ของ x แล้วเราจะเรียกฟังก์ชั่น PERC 452 00:25:23,030 --> 00:25:25,100 ดังนั้น PERC เป็นเพียงฟังก์ชั่นการกระทบ 453 00:25:25,100 --> 00:25:30,200 มันต้องใช้เวลาพีค่าบางอย่างที่ เป็นส่วนหนึ่งของชุดของทั้งหมดล้อมรอบ 454 00:25:30,200 --> 00:25:35,310 เสียงกระทบที่แตกต่างกัน ที่เราเห็นในสไลด์ก่อนหน้านี้ 455 00:25:35,310 --> 00:25:38,840 และจากนั้นก็ให้ว่า ระยะเวลาในการบันทึกไตรมาส 456 00:25:38,840 --> 00:25:43,190 อื่นมันให้มัน QNR และ QNR เป็นเพียงส่วนที่เหลือบันทึกไตรมาส 457 00:25:43,190 --> 00:25:44,970 >> ดังนั้นนี่คือการสร้างสิ่งที่ดีขึ้น 458 00:25:44,970 --> 00:25:52,110 เรามีรายการขององค์ประกอบและ เราจะห่วงมากกว่ารายการบางส่วนจากที่หนึ่ง 459 00:25:52,110 --> 00:25:54,540 ค่าสูงสุดของซีเควนขั้นตอนของเรา 460 00:25:54,540 --> 00:25:58,290 และเมื่อเราอยู่ที่ฉันโดยเฉพาะอย่างยิ่งใน รายการที่หนึ่งถึงค่าสูงสุดที่ 461 00:25:58,290 --> 00:26:02,970 ถ้าผมที่เป็นสมาชิกของนี้ ชุดสร้างขึ้นในฟังก์ชั่นนี้ 462 00:26:02,970 --> 00:26:06,040 ดีแล้วเราเปิด ลงในบันทึกย่อกระทบ 463 00:26:06,040 --> 00:26:10,960 มิฉะนั้นเราเพียงแค่เล่นส่วนที่เหลือซึ่ง คือจะบอกว่าเราก็ยังคงเงียบ 464 00:26:10,960 --> 00:26:16,050 และเราจะเห็นว่าในที่นี่ รูปแบบนี้เข้าใจรายการ 465 00:26:16,050 --> 00:26:20,030 x มีประชากรนี้ สร้างรายการหนึ่ง 466 00:26:20,030 --> 00:26:22,462 ขนาดระดับโลกของซีเควนเซอร์ 467 00:26:22,462 --> 00:26:23,295 CONNOR HARRIS: ใช่ 468 00:26:23,295 --> 00:26:26,340 ไวยากรณ์พื้นฐานสำหรับ รายการ comprehensions คือ 469 00:26:26,340 --> 00:26:30,810 ยึดค่าที่เกี่ยวข้องกับ ตัวแปรบางบาร์ 470 00:26:30,810 --> 00:26:34,260 ค่าที่เป็นไปของตัวแปร ตัวเองวงเล็บปิด 471 00:26:34,260 --> 00:26:38,545 และถ้าคุณได้ทำสัญกรณ์ตั้งสร้าง ในการเรียงลำดับของการเรียนคณิตศาสตร์ใด ๆ 472 00:26:38,545 --> 00:26:45,999 คุณอาจจะมีการตั้ง 2n ดังกล่าว ที่ n เป็นในหรือ n คือในซี 473 00:26:45,999 --> 00:26:48,290 ที่คล้ายกัน thing-- สัญกรณ์นี้ มีขึ้นเพื่อเป็นแนวทาง 474 00:26:48,290 --> 00:26:49,630 จากการที่ทางคณิตศาสตร์ 475 00:26:49,630 --> 00:26:51,880 สตีเฟน KREWSON: และคุณสามารถ ใช้หลายภาค 476 00:26:51,880 --> 00:26:56,250 และตัวกรองหลายในรายการ ความเข้าใจซึ่งเป็นสิ่งที่ดีมากทีเดียว 477 00:26:56,250 --> 00:27:01,800 พีชคณิต types-- เรา จะไม่อู้ยาวที่นี่ 478 00:27:01,800 --> 00:27:04,840 มีไม่ความคิดที่ดีในการ Haskell หรือดีความคิดที่เห็นได้ชัด 479 00:27:04,840 --> 00:27:10,720 ของวิธีการที่จะใช้การพูด, การเริ่มต้น พารามิเตอร์การทำงานหรือสิ่งที่ 480 00:27:10,720 --> 00:27:13,370 ในหลามนี้ค่อนข้างง่าย 481 00:27:13,370 --> 00:27:18,460 คุณก็สามารถพูดด้วยเท่ากับบน คำประกาศของฟังก์ชั่นที่ 482 00:27:18,460 --> 00:27:21,420 ค่าเริ่มต้นใน กรณีที่ไม่มีผู้ใดจะมา 483 00:27:21,420 --> 00:27:27,010 >> ใน Haskell คุณอาจจะสามารถทำได้ อาจจะใช้พิมพ์อาจจะ 484 00:27:27,010 --> 00:27:32,190 ซึ่งจะนำสิ่งใด หรือมูลค่าของประเภทเพียงหนึ่ง 485 00:27:32,190 --> 00:27:38,630 ดังนั้นเราจึงใช้ประโยชน์จากนี้ในเครื่องกลอง เพื่อให้เราสามารถให้ปริมาณตัวเลือก 486 00:27:38,630 --> 00:27:40,730 พารามิเตอร์แต่ละชิ้นส่วนกลอง 487 00:27:40,730 --> 00:27:46,160 488 00:27:46,160 --> 00:27:54,680 เพื่อให้ช่วยให้เรามีวิธีการของการมี EQ หรือไดรฟ์ในช่องทางเฉพาะ 489 00:27:54,680 --> 00:27:56,440 >> CONNOR HARRIS: ใน ตัวอย่าง Haskell อื่น ๆ 490 00:27:56,440 --> 00:28:00,450 คุณอาจเห็นอาจจะใช้สำหรับ ฟังก์ชั่นที่อาจล้มเหลว 491 00:28:00,450 --> 00:28:03,470 นี่คือหนึ่งที่พบบ่อย 492 00:28:03,470 --> 00:28:07,010 >> สตีเฟน KREWSON: และคุณสามารถจัดหา การเรียงลำดับของข้อผิดพลาดเป็นค่าเริ่มต้น 493 00:28:07,010 --> 00:28:11,020 และที่มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อ คุณกำลังทำ I / O ใน Haskell 494 00:28:11,020 --> 00:28:12,044 ที่สามารถเป็นเทคนิค 495 00:28:12,044 --> 00:28:13,960 CONNOR HARRIS: หรือสำหรับ ตัวอย่างที่คล้ายกันคิด 496 00:28:13,960 --> 00:28:17,460 ของการทำงานที่เกี่ยวข้องกับส่วน พารามิเตอร์ที่อาจจะเป็น 0 497 00:28:17,460 --> 00:28:20,020 และฟังก์ชั่นที่สามารถทำได้ สิ่งที่อาจจะกลับมา 498 00:28:20,020 --> 00:28:22,802 ดังนั้นหากมีส่วนที่ไม่มี 0, มันจะกลับมาเพียงแค่สิ่งที่ 499 00:28:22,802 --> 00:28:25,010 และหากมีการหารด้วย 0 ก็จะกลับไม่มีอะไร 500 00:28:25,010 --> 00:28:26,910 เป็นวิธีการส่งสัญญาณข้อผิดพลาด 501 00:28:26,910 --> 00:28:30,330 เพราะผลของการ Haskell ของการพิมพ์ที่เข้มงวดมาก 502 00:28:30,330 --> 00:28:34,100 คือว่าไม่มี real-- ข้อยกเว้นที่น่าอึดอัดใจโดยทั่วไป 503 00:28:34,100 --> 00:28:36,160 จัดการข้อผิดพลาดจะอึดอัด 504 00:28:36,160 --> 00:28:39,440 และนี่คือหนึ่งมาก วิธีการทั่วไปในการทำมัน 505 00:28:39,440 --> 00:28:42,990 >> สตีเฟน KREWSON: ดังนั้นตอนนี้เราได้รับ ไปยังอีกสิ่งที่ใจดัด 506 00:28:42,990 --> 00:28:49,160 เกี่ยวกับ Haskell ซึ่งเป็นรูปแบบ การจับคู่และคำจำกัดความของฟังก์ชั่น 507 00:28:49,160 --> 00:28:53,390 ฉันพบคุณในการสไลด์ที่ผ่านมา ประกาศลำดับขั้นตอน 508 00:28:53,390 --> 00:28:58,170 ฟังก์ชั่นที่เอาค่าที่อาจจะ แล้ว int แล้วรายชื่อของ ints, 509 00:28:58,170 --> 00:29:03,850 แล้วส่งกลับลำดับของ ค่าเพลงข้อเขียนมี 510 00:29:03,850 --> 00:29:05,375 ที่มีทั้งสนามและปริมาณ 511 00:29:05,375 --> 00:29:08,030 512 00:29:08,030 --> 00:29:11,820 >> ดังนั้นทั้งสามข้อโต้แย้งสามารถ รูปแบบการจับคู่ในลักษณะดังต่อไปนี้ 513 00:29:11,820 --> 00:29:16,660 และเรามักจะต้องการที่จะให้แน่ใจว่า ทำกรณีฐานหรือทางออกกรณีแรก 514 00:29:16,660 --> 00:29:19,690 และขีดเหล่านี้ ก็สามารถจะตีความ 515 00:29:19,690 --> 00:29:22,340 หมายถึงค่าใด ๆ ที่มี 516 00:29:22,340 --> 00:29:26,580 ดังนั้นหากเราได้รับโทรศัพท์ที่จะก้าวลำดับ ที่มีค่าบางค่าอื่น ๆ 517 00:29:26,580 --> 00:29:32,210 แล้วรายการที่ว่างเปล่าสิ่งที่เราต้องการ ที่จะกลับมาเป็นความเงียบเพียงส่วนที่เหลือ 0 518 00:29:32,210 --> 00:29:35,110 >> และแทนที่จะว่า เป็นรายการที่ว่างเปล่าหรือ 0 519 00:29:35,110 --> 00:29:38,150 มันเป็นส่วนที่เหลือ 0, เพราะเรา การจัดการกับประเภทดนตรี 520 00:29:38,150 --> 00:29:43,230 และรายการที่ว่างเปล่าของเพลง ประเภทเป็นเพียงส่วนที่เหลือของระยะเวลาไม่มี 521 00:29:43,230 --> 00:29:45,680 มันเป็นเพลงที่ไม่มี 522 00:29:45,680 --> 00:29:51,460 และจากนั้นเราดูว่าเราจะได้รับขั้นตอน ลำดับด้วย v สำหรับอาร์กิวเมนต์ปริมาณ 523 00:29:51,460 --> 00:29:57,290 พีสำหรับตราสารระมัดระวัง อาร์กิวเมนต์แล้วรายการของเอ็กซ์ 524 00:29:57,290 --> 00:29:58,360 >> แล้วเราจะทำสิ่งบางอย่าง 525 00:29:58,360 --> 00:30:01,290 โดยเฉพาะอย่างยิ่งเราใช้ ความเข้าใจในรายการนี​​้ 526 00:30:01,290 --> 00:30:05,700 และเราดำเนินการบางอย่าง การดำเนินการกับค่าอาจจะ 527 00:30:05,700 --> 00:30:10,050 ที่จะเปิดเป็นค่าตัวเลขเพื่อให้ มันอาจจะแจกแจงแล้วและใช้ 528 00:30:10,050 --> 00:30:12,300 เพื่อเลือกเครื่องมือ 529 00:30:12,300 --> 00:30:16,730 อีกครั้งนี้เป็นเพียงเล็กน้อย บิตจงใจ inconcise 530 00:30:16,730 --> 00:30:20,580 เพียงเพื่อแสดงทุกสิ่งที่แปลก คุณสามารถทำได้ในขณะที่คุณ Haskell 531 00:30:20,580 --> 00:30:23,170 จะดูที่มันเกี่ยวกับเวลาของคุณเอง 532 00:30:23,170 --> 00:30:23,802 >> ทั้งหมดขวา 533 00:30:23,802 --> 00:30:26,010 ดังนั้นเราในที่สุดการเดินทางไปยัง ทำสิ่งที่เราออกไปทำ 534 00:30:26,010 --> 00:30:28,820 ซึ่งเป็นเพลงที่ทำให้คอมพิวเตอร์บาง 535 00:30:28,820 --> 00:30:32,250 ดังนั้นเราจะพยายามที่จะ ทำให้เพลง Frere ฌาคส์ 536 00:30:32,250 --> 00:30:35,220 ดังนั้นจึงมีหลายวิธี วลีใน Frere ฌาคส์? 537 00:30:35,220 --> 00:30:38,790 538 00:30:38,790 --> 00:30:39,680 สี่. 539 00:30:39,680 --> 00:30:40,460 ที่ดี 540 00:30:40,460 --> 00:30:42,490 และสิ่งที่ดีคือ พวกเขากำลังทั้งหมดซ้ำแล้วซ้ำอีก 541 00:30:42,490 --> 00:30:46,990 จำนวนเงินเดียวกันของเวลาซึ่งเป็นสอง 542 00:30:46,990 --> 00:30:50,730 >> ดังนั้นเราจึงมีสี่วลี แต่ละซ้ำสองครั้ง 543 00:30:50,730 --> 00:30:53,590 และโดยเฉพาะอย่างยิ่งพวกเขาอยู่ในรอบ 544 00:30:53,590 --> 00:30:55,340 และมีเป็นจำนวนมาก หลายวิธีที่จะดำเนินการ 545 00:30:55,340 --> 00:30:57,520 รอบที่อาจจะสนุกที่จะทำ 546 00:30:57,520 --> 00:31:00,260 ผมเคยทำไว้ใน วิธีที่ง่ายสวยที่นี่ 547 00:31:00,260 --> 00:31:05,760 ซึ่งเป็นเพียงเพื่อ construct-- สาย ฟังก์ชั่นใช้รายการของค่าเพลง 548 00:31:05,760 --> 00:31:10,390 และเปลี่ยนมันเป็นองค์ประกอบตามลำดับ โดยการใช้ว่าองค์ประกอบตามลำดับ 549 00:31:10,390 --> 00:31:13,000 ผู้ประกอบการ 550 00:31:13,000 --> 00:31:19,540 >> แล้วฉันล่าช้าชิ้นส่วนที่แตกต่างกัน โดยทำให้พวกเขาเริ่มต้นด้วยการพักผ่อน 551 00:31:19,540 --> 00:31:22,770 ดังนั้นผมจึงเริ่มต้นด้วยส่วนที่เหลือของทั้งสองมาตรการ แล้วส่วนที่เหลือของสี่มาตรการ 552 00:31:22,770 --> 00:31:26,160 แล้วส่วนที่เหลือของหก มาตรการและจากนั้นรอบ 553 00:31:26,160 --> 00:31:32,290 การทำงานในขณะที่เราทุกคนรู้ว่าเพลงนี้ 554 00:31:32,290 --> 00:31:37,180 เราเห็นสองหรือคำอธิบายประกอบ การปรับเปลี่ยนของค่าเพลง 555 00:31:37,180 --> 00:31:43,150 ที่มีอยู่ในลำดับนี้ การจัดองค์ประกอบของเพลง 556 00:31:43,150 --> 00:31:44,810 ขณะนี้มีปริมาณเพิ่ม 557 00:31:44,810 --> 00:31:48,960 นี้เป็นฟังก์ชั่นที่จะอธิบาย เพลงที่มีปริมาณโดยเฉพาะอย่างยิ่ง 558 00:31:48,960 --> 00:31:51,320 นี้เป็นตัวอย่างที่ดี ของสัญญาณ MIDI ทำงาน 559 00:31:51,320 --> 00:31:57,510 0-127 เจ็ดบิต ข้อมูลที่สามารถดำเนินการ 560 00:31:57,510 --> 00:32:00,650 >> และ then-- เราเห็นว่ามันมาก สั้น ๆ แต่ MIDI ทั่วไป 561 00:32:00,650 --> 00:32:02,310 รายชื่อของเครื่องมือที่แตกต่างกัน 562 00:32:02,310 --> 00:32:04,450 และมีไม่มากทั้งของพวกเขา 563 00:32:04,450 --> 00:32:11,230 ถ้าคุณใช้เวิร์คสเตชั่เสียงดิจิตอล เช่น Ableton สดหรือ Pro เครื่องมือ 564 00:32:11,230 --> 00:32:17,560 มีช่วงที่กว้างขึ้นอย่างไม่น่าเชื่อ สังเคราะห์และเครื่องมือ VST 565 00:32:17,560 --> 00:32:21,510 แต่มาตรฐาน MIDI เท่านั้น มีไม่กี่หรือหลายโหล 566 00:32:21,510 --> 00:32:22,799 และบางส่วนของพวกเขาเป็นตลก 567 00:32:22,799 --> 00:32:25,840 ฉันคิดว่ามันจะสนุกถ้าเราเล่น เครื่องดนตรีเครื่องดนตรี MIDI 568 00:32:25,840 --> 00:32:30,550 เฮลิคอปเตอร์แล้ว วิธีต่อไปผ่านรอบ 569 00:32:30,550 --> 00:32:37,980 เราทำ synth แผ่นแล้วของ นำนี้ซ้ำซากตาราง synth คลื่น 570 00:32:37,980 --> 00:32:44,240 แล้วเสียงซึ่มซึ่งเป็น นิด ๆ หน่อย ๆ ไม่ชัดใน MIDI ไม่ดีของฉัน 571 00:32:44,240 --> 00:32:46,410 สังเคราะห์ แต่พวกเขาตกลง 572 00:32:46,410 --> 00:32:50,030 >> และจากนั้นก็ปล่อยให้เราเห็นนี้ และไวยากรณ์จาก Haskell, 573 00:32:50,030 --> 00:32:54,030 และจากนั้นเรากำลังเล่น ชิ้นส่วนเหล่านี้ร่วมกัน 574 00:32:54,030 --> 00:32:56,265 กับผู้ประกอบการองค์ประกอบขนาน 575 00:32:56,265 --> 00:33:00,260 576 00:33:00,260 --> 00:33:02,296 และเราอาจจะแสดงบางส่วนของนี้ 577 00:33:02,296 --> 00:33:07,674 578 00:33:07,674 --> 00:33:08,340 นี่คือรหัสของ 579 00:33:08,340 --> 00:33:14,960 และคุณสามารถเห็นใน C มีต้องการเป็น จำนวนมากของการล้างลำคอและการตั้งค่า 580 00:33:14,960 --> 00:33:19,760 รหัสตารางก่อนที่คุณจะ สามารถทำให้เพลงเช่นนี้ 581 00:33:19,760 --> 00:33:22,080 หรือการเขียนโปรแกรมอื่น ๆ ภาษาที่คุณต้องการอาจ 582 00:33:22,080 --> 00:33:27,210 มีการโต้ตอบกับการจัดเรียงของบางอย่าง ห้องสมุดหรือ API และการตั้งค่าทุกอย่างขึ้น 583 00:33:27,210 --> 00:33:28,725 แล้วคุณจะต้องทำความสะอาด 584 00:33:28,725 --> 00:33:33,810 แต่ที่นี่คือ Haskell ผมคิดว่าครั้งเดียว คุณจะได้รับการแขวนของมันอย่างไม่น่าเชื่อ 585 00:33:33,810 --> 00:33:35,770 สามารถอ่านได้และแสดงออกมาก 586 00:33:35,770 --> 00:33:38,930 587 00:33:38,930 --> 00:33:43,240 เพื่อให้มีการดำเนินการ Frere ของฌาคส์ 588 00:33:43,240 --> 00:33:43,740 ทั้งหมดขวา 589 00:33:43,740 --> 00:33:47,557 ตอนนี้เราต้องการที่จะเพิ่มกระทบ และนี่คือ Messier นิด ๆ หน่อย ๆ 590 00:33:47,557 --> 00:33:49,015 ดังนั้นลองมาดูที่สไลด์ได้ 591 00:33:49,015 --> 00:33:56,880 592 00:33:56,880 --> 00:34:00,540 ดังนั้นความคิดที่ยิ่งใหญ่คือการทำให้ พวงของรายการหรือชิ้นส่วน 593 00:34:00,540 --> 00:34:04,140 ในบรรดาม้วนในเครื่องมี โดยทั่วไปอาจจะเกี่ยวกับแปด 594 00:34:04,140 --> 00:34:08,670 10 จังหวะหรือชิ้นส่วนที่กระทบ 595 00:34:08,670 --> 00:34:10,159 แล้วใช้พวงของเทคนิค 596 00:34:10,159 --> 00:34:14,889 และเราได้พูดคุยเกี่ยวกับการใช้ these-- เท่ากรอง, ฟังก์ชั่นแลมบ์ดา 597 00:34:14,889 --> 00:34:19,429 แมปมากกว่ารายการที่จะสร้างค่านิยม ในบางช่วง 1 ถึง R, r คือ 16 598 00:34:19,429 --> 00:34:20,699 หรือ 32 ขั้นตอนในซีเควนเซอร์ 599 00:34:20,699 --> 00:34:23,810 600 00:34:23,810 --> 00:34:29,920 >> และจากนั้นถ้ามีค่าในรายการว่า ในขณะที่เรากำลังวิ่งผ่านซีเควนที่ 601 00:34:29,920 --> 00:34:34,190 วิ่งผ่านมันไปและ มากกว่าก็จะเปิดในวันที่ทราบว่า 602 00:34:34,190 --> 00:34:36,060 และตัวอย่างที่ได้รับการเรียก 603 00:34:36,060 --> 00:34:42,810 604 00:34:42,810 --> 00:34:47,110 ที่นี่มีทุกวิธีที่แปลกแตกต่างกัน ฉันมากับการสร้างบันทึก 605 00:34:47,110 --> 00:34:48,940 ลองบนผลรวมกึ่งของคุณเอง 606 00:34:48,940 --> 00:34:50,360 มันจะเสียงเย็น 607 00:34:50,360 --> 00:34:53,066 608 00:34:53,066 --> 00:34:54,690 เวลาที่อนุญาตให้เราจะผ่านไปนี้ 609 00:34:54,690 --> 00:34:59,200 แต่สำหรับตอนนี้ผมคิดว่า เราควรจะสาธิตสิ่งที่เรามี 610 00:34:59,200 --> 00:35:01,380 หวังว่านี้ไปตกลง 611 00:35:01,380 --> 00:35:02,670 >> ดังนั้นนี่คือ GHCI 612 00:35:02,670 --> 00:35:06,580 613 00:35:06,580 --> 00:35:09,121 และเราจะโหลดไฟล์ ฉันมีที่เรียกว่า song.lhs, 614 00:35:09,121 --> 00:35:10,620 ซึ่งเป็นไฟล์ฉันเพียงแค่แสดงให้เห็นว่าคุณ 615 00:35:10,620 --> 00:35:11,470 ตกลงที่ดี 616 00:35:11,470 --> 00:35:15,010 ในฐานะที่เป็นคอนเนอร์กล่าวว่าก่อนหน้านี้ก็ รวบรวมมันพิมพ์การตรวจสอบ 617 00:35:15,010 --> 00:35:18,380 เพื่อให้สามารถหายใจได้ง่ายขึ้นมาก 618 00:35:18,380 --> 00:35:20,010 มันไม่ได้เป็นไปที่จะระเบิดขึ้นกับฉัน 619 00:35:20,010 --> 00:35:22,720 >> ผมไม่ต้องการที่จะแสดงให้คุณเห็นสิ่งที่มีประโยชน์ 620 00:35:22,720 --> 00:35:25,900 คุณสามารถดูว่า โมดูลที่เรียกว่าเต็ม 50 621 00:35:25,900 --> 00:35:28,240 คุณสามารถเรียกดูโมดูลที่ 622 00:35:28,240 --> 00:35:32,092 และนี่เป็นสิ่งที่ดีดังนั้น เกี่ยวกับสิ่งที่อาจจะ doing-- 623 00:35:32,092 --> 00:35:34,550 คุณกำลังทำใน Haskell ไม่ ที่เรียกว่าการพัฒนาซอฟต์แวร์ 624 00:35:34,550 --> 00:35:36,980 แต่คุณสามารถทำจำนวนมาก สิ่งที่สนุกด้วยตัวคุณเอง 625 00:35:36,980 --> 00:35:42,410 และขั้นตอนการทำงานที่เป็นจริงดีเป็น เมื่อเทียบกับจำนวนมากของภาษาอื่น ๆ 626 00:35:42,410 --> 00:35:45,872 เพราะคุณจะได้เห็นในจริงๆ วิธีการอ่านสิ่งที่เกิดขึ้น 627 00:35:45,872 --> 00:35:47,830 ดังนั้นเราจะเห็นว่าเรามี วลีทั้งหมดเหล่านี้ซึ่ง 628 00:35:47,830 --> 00:35:53,760 เป็นรายการเพลงของสนามและจากนั้นเรา สร้างขึ้นเหล่านี้เป็นสิ่งที่มีขนาดใหญ่ 629 00:35:53,760 --> 00:35:55,220 ซึ่งเป็นเพลงเพลง 630 00:35:55,220 --> 00:35:58,450 มันเป็นหน่วยดนตรี 631 00:35:58,450 --> 00:36:05,545 และจากนั้นเราสามารถเล่นทั้งหมดนี้ ที่มีฟังก์ชั่นที่เรียกว่าการเล่นดนตรี 632 00:36:05,545 --> 00:36:09,040 คุณจะเห็นว่าลงที่นี่ 633 00:36:09,040 --> 00:36:11,310 ซึ่งเป็นเพียงการเล่น 634 00:36:11,310 --> 00:36:15,040 >> ฉันควร say-- ผมไม่ได้พูดคุยเกี่ยวกับ เครื่องหมายดอลลาร์ที่ทุกที่ 635 00:36:15,040 --> 00:36:17,980 เครื่องหมายดอลลาร์เป็นผู้ดำเนินการมัดอื่น 636 00:36:17,980 --> 00:36:22,500 แต่มันก็มีความสำคัญที่ต่ำที่สุด ของผู้ประกอบการใด ๆ ที่มีประสิทธิภาพ 637 00:36:22,500 --> 00:36:24,960 หมายความว่าทุกอย่างบน ด้านซ้ายของเครื่องหมายดอลลาร์ 638 00:36:24,960 --> 00:36:28,460 และด้านขวาของเครื่องหมายดอลลาร์ที่ เรากำลังจะได้รับการประเมินก่อนที่จะ 639 00:36:28,460 --> 00:36:31,430 ดังนั้นจึงเป็นประเภทชอบอีก วิธีการเพิ่มวงเล็บ 640 00:36:31,430 --> 00:36:33,980 641 00:36:33,980 --> 00:36:36,220 >> CONNOR HARRIS: มันเป็นพื้น องค์ประกอบของฟังก์ชั่น 642 00:36:36,220 --> 00:36:40,026 และเพื่อให้แน่ใจว่าคุณไม่ได้ถ้า have-- คุณมีฟังก์ชั่นทั้งสองข้างหรือมัด 643 00:36:40,026 --> 00:36:42,900 ผู้ประกอบการในด้านใดด้านหนึ่งพวกเขาจะไม่ เชื่อมโยงข้ามมันและให้คุณ 644 00:36:42,900 --> 00:36:46,030 ผลที่ไม่คาดคิด 645 00:36:46,030 --> 00:36:49,790 >> สตีเฟน KREWSON: ดังนั้นเรา can-- โดยใช้ที่เราสามารถเรียก 646 00:36:49,790 --> 00:36:51,415 ครั้งแรกที่เราจะเล่นได้โดยไม่ต้องกลอง 647 00:36:51,415 --> 00:37:00,330 648 00:37:00,330 --> 00:37:03,170 นั่นเป็นเฮลิคอปเตอร์ เฮลิคอปเตอร์ MIDI 649 00:37:03,170 --> 00:37:05,495 >> [เล่นเพลง] 650 00:37:05,495 --> 00:37:08,525 651 00:37:08,525 --> 00:37:09,525 มีคลื่นสี่เหลี่ยมคือ 652 00:37:09,525 --> 00:37:24,520 653 00:37:24,520 --> 00:37:25,490 เสียงซึ่ม 654 00:37:25,490 --> 00:37:27,630 และจริงๆคุณสามารถไปป่ากับเรื่องนี้ 655 00:37:27,630 --> 00:37:30,872 ฉันเลือกหนึ่งที่ง่ายสวย เพราะผมรู้ว่าผมไม่ควรกัดออก 656 00:37:30,872 --> 00:37:31,830 กว่าฉันจะได้เคี้ยว 657 00:37:31,830 --> 00:37:36,460 เพียงแค่ให้มันง่ายสวย ที่จะแสดงความคิดหลัก 658 00:37:36,460 --> 00:37:39,952 แต่แล้วฉันก็ชอบเราได้ มีการเพิ่มกลองบางนี้ 659 00:37:39,952 --> 00:37:41,910 เพียงเพราะนี้เป็น นิด ๆ หน่อย ๆ ไม่ยอมรับ 660 00:37:41,910 --> 00:37:45,790 และผมก็ไม่ได้ใช้ ชื่อของชิ้นส่วนกลอง 661 00:37:45,790 --> 00:37:49,490 ฉันแมป them-- เพราะพวกเขากำลัง ส่วนหนึ่งของที่ระดับนับจำนวน 662 00:37:49,490 --> 00:37:51,500 ฉันแมปให้พวกเขา ints 663 00:37:51,500 --> 00:37:53,120 หนึ่งเป็นเหมือนเสียงกลองเบส 664 00:37:53,120 --> 00:37:54,370 ศูนย์เป็นเช่นกัน 665 00:37:54,370 --> 00:37:56,000 เซเว่นเป็นหมวกสูง 666 00:37:56,000 --> 00:38:00,920 และลงที่นี่ที่ ฟังก์ชั่นได้รับน้อยสุ่มมากขึ้น 667 00:38:00,920 --> 00:38:02,100 เหล่านี้เป็นเหมือนกลองคอง 668 00:38:02,100 --> 00:38:08,360 >> ดังนั้นถ้าคุณคิดว่าอาจจะเป็น about-- วิธีที่สนุกที่จะใช้เครื่องกลอง 669 00:38:08,360 --> 00:38:12,830 คือการใช้เป็นระเบียบเรียบร้อยมาก รูปแบบบนกลองเบสของคุณ 670 00:38:12,830 --> 00:38:17,640 ดังนั้นสำหรับตัวอย่างเช่นในการกรองมากกว่า รายการที่มีทุกอย่างที่จะช่วยให้กลับมา 671 00:38:17,640 --> 00:38:20,590 1 เมื่อมันเอาโมดูล 04 672 00:38:20,590 --> 00:38:27,190 ดังนั้นผมจึงได้รับ 1, 5, 9, 13, 17-- ดังนั้นนี้ เป็นจังหวะแรกของทุกตัวชี้วัด 673 00:38:27,190 --> 00:38:32,860 >> และแล้วนี้ก็เช่นเดียวกัน สิ่งที่เปลี่ยนไปสองขั้นตอน 674 00:38:32,860 --> 00:38:33,850 ดังนั้นที่ผิดปรกติ 675 00:38:33,850 --> 00:38:37,480 ดังนั้นนี้จะเป็น บางสิ่งบางอย่างเช่นหมวกสูง 676 00:38:37,480 --> 00:38:39,640 และแล้วอีกครั้งลงที่นี่ มันเป็นเรื่องเล็ก ๆ น้อย ๆ แบบสุ่ม 677 00:38:39,640 --> 00:38:41,080 เพราะเรากำลังทำกลองคอง 678 00:38:41,080 --> 00:38:44,180 และฉันมี maracas บางลงที่นี่ด้วย 679 00:38:44,180 --> 00:38:50,280 >> ดังนั้นผมจึงสามารถเรียกเครื่องกลองเล่น แต่มันจะไปอยู่กับคุณตลอด 680 00:38:50,280 --> 00:38:53,700 และมันอาจจะเริ่มต้นขึ้นโลภ หน่วยความจำทั้งหมดในระบบของฉัน 681 00:38:53,700 --> 00:38:57,090 ดังนั้นผมจึงจะเรียกฟังก์ชั่นนี้ เล่นเพลงซึ่งในขณะที่เราจะเห็น 682 00:38:57,090 --> 00:39:02,020 ใช้องค์ประกอบขนานตัดทอน การเล่น Frere น้อยของเราเพลงฌาคส์ 683 00:39:02,020 --> 00:39:04,200 พร้อมกับเครื่องเคาะแปลกนี้ 684 00:39:04,200 --> 00:39:06,190 ดังนั้นลองมาดู 685 00:39:06,190 --> 00:39:10,920 และโปรดอย่าปรับปรุงเกี่ยวกับฉัน การจัดเรียงของทุกชิ้นส่วนกลอง 686 00:39:10,920 --> 00:39:13,375 ไม่ได้พิเศษของฉัน แต่ฉัน มีจำนวนมากสนุกทำมัน 687 00:39:13,375 --> 00:39:17,678 688 00:39:17,678 --> 00:39:20,654 >> [เล่นเพลง] 689 00:39:20,654 --> 00:39:52,260 690 00:39:52,260 --> 00:39:56,980 >> ดังนั้นหลักสูตรนี้ทั้งหมด นิด ๆ หน่อย ๆ ไม่ได้เป็นความสนุกสนาน 691 00:39:56,980 --> 00:40:01,100 ถ้าเราไม่สามารถแปลงเป็น คะแนนดังนั้นบางทีมันอาจจะ 692 00:40:01,100 --> 00:40:04,650 อาจจะตีความ โดยนักแสดงมนุษย์ 693 00:40:04,650 --> 00:40:06,535 ดังนั้นผมจะไม่ทำงานที่นี่ 694 00:40:06,535 --> 00:40:07,910 ฉันได้สร้างแล้วไฟล์ 695 00:40:07,910 --> 00:40:10,280 คุณจะเห็นว่ามี จุด Lilypond file-- นี้ 696 00:40:10,280 --> 00:40:14,500 จะทำต่อไปของฉัน Connor-- และไฟล์ MIDI จุด 697 00:40:14,500 --> 00:40:18,610 และไฟล์ PDF จุดซึ่งเป็นสิ่งที่ Lilypond ที่สุดจะสร้าง 698 00:40:18,610 --> 00:40:23,770 >> แต่เหล่านี้เป็นสคริปต์เหล่านั้นและฉันจะ เพียงแค่ใช้พวกเขาด้วยตัวเลือกการช่วยเหลือของพวกเขา 699 00:40:23,770 --> 00:40:28,090 ถ้าคุณได้รับเหล่านี้ขึ้นและทำงานกับ Euterpea คุณสามารถสร้างไฟล์ MIDI 700 00:40:28,090 --> 00:40:31,160 และจากไฟล์ MIDI กับโปรแกรมนี้ MIDI 2LY, 701 00:40:31,160 --> 00:40:34,930 คุณสามารถสร้างลิลลี่ ไฟล์บ่อและจากนั้นคุณ 702 00:40:34,930 --> 00:40:37,974 สามารถสร้างไฟล์ PDF ของคะแนนที่ 703 00:40:37,974 --> 00:40:39,390 และเราควรจะดูที่นี้ 704 00:40:39,390 --> 00:40:52,599 705 00:40:52,599 --> 00:40:55,140 ดังนั้นคอนเนอร์อาจจะแสดงให้เห็น วิธีการอธิบายที่ดีกว่านี้ 706 00:40:55,140 --> 00:41:02,570 แต่นี้เป็น Frere ฌาคส์เป็น ที่สร้างขึ้นโดยฉันใน Euterpea 707 00:41:02,570 --> 00:41:07,300 มันเป็นเพียงแค่ใน C. ฉันควรจะได้คิด สิ่งที่สับเป็นจริงใน 708 00:41:07,300 --> 00:41:11,090 แต่ที่เป็นท่อสำหรับ วิธีการที่คุณทำกับที่ 709 00:41:11,090 --> 00:41:12,950 ลองพูดคุยเกี่ยวกับ Lilypond 710 00:41:12,950 --> 00:41:15,780 >> CONNOR HARRIS: OK ลองดู 711 00:41:15,780 --> 00:41:19,480 712 00:41:19,480 --> 00:41:21,419 คุณพูดถึงคุณเรียนรู้ Haskell? 713 00:41:21,419 --> 00:41:22,460 สตีเฟน KREWSON: Oh yeah 714 00:41:22,460 --> 00:41:23,480 ตรวจสอบการเรียนรู้คุณ Haskell 715 00:41:23,480 --> 00:41:24,410 มันอยู่ในทรัพยากร 716 00:41:24,410 --> 00:41:26,830 นั่นเป็นวิธีที่ผมเริ่ม การเรียนรู้และเป็นที่ดี 717 00:41:26,830 --> 00:41:27,580 การเรียนรู้ไม่ได้โง่ 718 00:41:27,580 --> 00:41:28,829 >> CONNOR HARRIS: ดังนั้นจึงเป็นออนไลน์ 719 00:41:28,829 --> 00:41:34,760 ดังนั้นผู้ชายที่ชื่อ [ไม่ได้ยิน] learnyouahaskell.com ไม่มีช่องว่าง 720 00:41:34,760 --> 00:41:37,065 ไวยากรณ์มีอาการป่วย 721 00:41:37,065 --> 00:41:38,690 สตีเฟน KREWSON: มันแสดงมากเกินไป 722 00:41:38,690 --> 00:41:39,440 CONNOR HARRIS: ดังนั้นสิ่งที่เป็น Lilypond? 723 00:41:39,440 --> 00:41:42,480 มันเป็นที่เปิดเผยการเขียนโปรแกรม ภาษาสำหรับเพลงเรียงพิมพ์ 724 00:41:42,480 --> 00:41:45,480 ดังนั้นคุณสามารถ declarative-- คิดว่าสิ่งเช่น HTML, 725 00:41:45,480 --> 00:41:50,900 ที่คุณไม่ saying-- HTML ไม่ได้บอกว่าเว็บเบราเซอร์ที่ควร 726 00:41:50,900 --> 00:41:52,180 ทำให้หน้าทีละขั้นตอน 727 00:41:52,180 --> 00:41:54,096 มันเป็นเพียงแค่คำพูดนี้ เป็นคำอธิบายเกี่ยวกับใจ 728 00:41:54,096 --> 00:41:56,100 สิ่งที่คุณต้องการหน้าจะมีลักษณะเหมือน 729 00:41:56,100 --> 00:41:59,310 >> และจากนั้นก็ยังมีโปรแกรม ที่รวบรวมภาษานี้ 730 00:41:59,310 --> 00:42:02,300 หรืออ่านในและแล้วจริง ไม่เรียงพิมพ์สำหรับคุณ 731 00:42:02,300 --> 00:42:05,570 และถ่มน้ำลายออกมาเหล่านี้ มองที่ยอดเยี่ยมคะแนน PDF 732 00:42:05,570 --> 00:42:08,250 นอกจากนี้คุณยังจะได้รับรูปแบบ PNG หรืออะไรก็ตาม 733 00:42:08,250 --> 00:42:10,300 วิธีที่ดีที่จะคิดว่า นี้คือโดยการเปรียบเทียบ 734 00:42:10,300 --> 00:42:16,620 คือน้ำยางเป็นประเภทเช่น LillyPond, แต่เพียงเรียงพิมพ์สามัญ 735 00:42:16,620 --> 00:42:20,360 ดังนั้นแทนที่จะ of-- ก็ไม่ได้ WYSIWYG, สิ่งที่คุณเห็น 736 00:42:20,360 --> 00:42:22,960 คือสิ่งที่คุณได้รับเช่นเดียวกับการพูด ตอนจบเป็นหรือเลียส, 737 00:42:22,960 --> 00:42:27,430 หรือ Microsoft Word, ที่คุณสามารถพิมพ์ใน สิ่งที่เวลาจริงและร่างในเวลาจริง 738 00:42:27,430 --> 00:42:31,340 และเห็นการเปลี่ยนแปลงทันที 739 00:42:31,340 --> 00:42:32,140 >> มันเป็นข้อความตาม 740 00:42:32,140 --> 00:42:35,290 คุณมีการรวบรวมของคุณ คะแนนโดยใช้โปรแกรมแยกต่างหาก 741 00:42:35,290 --> 00:42:37,090 และได้รับการออกไฟล์ PDF ในภายหลัง 742 00:42:37,090 --> 00:42:43,320 นี้เป็นบิตน้อย สะดวกสำหรับการใช้งานถ้าคุณ 743 00:42:43,320 --> 00:42:46,520 พยายามที่จะเขียนโดยตรง เข้าคะแนนและคุณ 744 00:42:46,520 --> 00:42:48,620 พยายามที่จะเขียนในคอมพิวเตอร์ 745 00:42:48,620 --> 00:42:50,830 แต่มีจำนวนมาก ข้อดีของมัน 746 00:42:50,830 --> 00:42:56,110 หนึ่งก็ไม่ดูมากดีกว่าที่ เพราะ LillyPond สามารถจริง 747 00:42:56,110 --> 00:42:58,210 ใช้เวลาในการทำ รูปแบบการตัดสินใจที่ถูกต้อง 748 00:42:58,210 --> 00:43:02,380 ซึ่งแตกต่างจาก Sibelius หรือละครที่มี ที่จะทำให้ขั้นตอนวิธีการที่ถูกบุกรุกเพื่อ 749 00:43:02,380 --> 00:43:05,020 ว่าพวกเขาสามารถแสดง สิ่งที่อยู่ในเวลาจริง 750 00:43:05,020 --> 00:43:07,660 >> ดังนั้นทำไม LilyPond-- คอมพิวเตอร์กราฟิกเป็นเรื่องยาก 751 00:43:07,660 --> 00:43:10,535 หากคุณกำลังทำอะไรกับเพลง และคุณต้องการที่จะเขียนออกมาคะแนน, 752 00:43:10,535 --> 00:43:13,900 คุณไม่ต้องการที่จะเขียน ทุกอย่างได้ด้วยตัวเอง 753 00:43:13,900 --> 00:43:19,040 เริ่มต้นด้วยวิธีการวาด บุคคลากรและวิธีการวาด notepads 754 00:43:19,040 --> 00:43:21,020 มันยากมาก. มันเคยทำมาก่อน 755 00:43:21,020 --> 00:43:22,170 คุณไม่เป็นไร. 756 00:43:22,170 --> 00:43:26,200 >> หากคุณต้องการที่จะใช้ Finale หรือเลียส, รูปแบบไฟล์สำหรับสิ่งเหล่านั้น 757 00:43:26,200 --> 00:43:30,180 มีความซับซ้อนมากและคุณไม่สามารถ พวกเขาจริงๆใช้โปรแกรม 758 00:43:30,180 --> 00:43:35,020 คุณสามารถเปิดเลียสกับฟินาเล่ และไปที่ File เพื่อการส่งออกเป็น PDF ด้วยตัวคุณเอง 759 00:43:35,020 --> 00:43:37,600 แต่คุณไม่สามารถจริงๆ เรียกว่าจากสคริปต์ 760 00:43:37,600 --> 00:43:40,440 LillyPond คุณสามารถเรียก จากสคริปต์เหล่านั้น 761 00:43:40,440 --> 00:43:44,397 คุณสามารถจะย้ำ LillyPond กับน้ำยาง 762 00:43:44,397 --> 00:43:47,230 ฉันจะไม่ได้มีเวลามากที่จะไป เทคโนโลยีเหล่านี้เข้ามาในตอนนี้ 763 00:43:47,230 --> 00:43:48,321 แต่พวกเขามีอยู่ 764 00:43:48,321 --> 00:43:50,070 หากคุณต้องการที่จะดู เป็นหนังสือ LillyPond, 765 00:43:50,070 --> 00:43:53,760 มันเป็นโปรแกรมที่มาพร้อมกับ กระจาย LillyPond ของคุณ 766 00:43:53,760 --> 00:43:57,030 และก็สำหรับ iterating ชิ้นส่วนลงไปในน้ำยาง LillyPond 767 00:43:57,030 --> 00:44:00,340 ถ้าคุณต้องการที่จะทำบางสิ่งบางอย่าง เช่นเอกสารการแต่งเพลงที่ยิ่งใหญ่ 768 00:44:00,340 --> 00:44:02,289 ด้วยตัวอย่างเช่น 769 00:44:02,289 --> 00:44:04,580 และมันเป็นทักษะที่ดีสำหรับ ชีวิตถ้าคุณกำลังทำอะไร 770 00:44:04,580 --> 00:44:05,770 กับเพลงไม่ได้เป็นเพียง CS50 771 00:44:05,770 --> 00:44:09,320 ผมเคยใช้ LillyPond ทั้งหมด ของโครงการองค์ประกอบของฉัน 772 00:44:09,320 --> 00:44:11,880 ตั้งแต่ผมยังเป็นพื้น อาวุโสในโรงเรียนมัธยม 773 00:44:11,880 --> 00:44:13,455 >> ดังนั้นนี่คือบางตัวอย่างง่ายๆ 774 00:44:13,455 --> 00:44:17,490 775 00:44:17,490 --> 00:44:21,060 นี้เป็นตัวแทนโดยทั่วไป ระดับของความยากลำบาก 776 00:44:21,060 --> 00:44:23,481 ที่คนส่วนใหญ่จะ หน้ามันพวกเขากำลังพยายาม 777 00:44:23,481 --> 00:44:24,980 ที่จะใช้สำหรับโครงการ Lilypond ง่าย 778 00:44:24,980 --> 00:44:29,519 นี้คนแรกคือจุดเริ่มต้น ที่จะนำกลุ่มนักร้องประสานเสียงของ Bach 779 00:44:29,519 --> 00:44:31,810 นี้ล่างคือข้อความที่ตัดตอนมา จากหนึ่งในผลงานของตัวเอง 780 00:44:31,810 --> 00:44:34,650 และเป็นเพียงมีการแสดง สิ่งที่คุณชอบ [ไม่ได้ยิน] 781 00:44:34,650 --> 00:44:38,550 วางหลายบรรทัดในเดียวกัน พนักงานว่าบทกวีงาน undersetting 782 00:44:38,550 --> 00:44:41,350 783 00:44:41,350 --> 00:44:46,110 underlays ละครเป็นสิ่งที่ที่มาก ง่ายต่อการใช้ Lilypond สำหรับเพลงประสานเสียง 784 00:44:46,110 --> 00:44:48,814 >> และอื่น ๆ แล้วมีบางมากขึ้น ตัวอย่างที่ซับซ้อนที่นี่ 785 00:44:48,814 --> 00:44:50,980 ทั้งหมดเหล่านี้จะทำใน Lilypond และพวกเขากำลังไปได้ 786 00:44:50,980 --> 00:44:55,280 ข้อความที่ตัดตอนมานี้ครั้งแรกจาก [ไม่ได้ยิน] โดย [ไม่ได้ยิน] 787 00:44:55,280 --> 00:44:58,860 และนี่ [ไม่ได้ยิน] จาก ชิ้นส่วนที่ให้เสียงเบสเดี่ยว 788 00:44:58,860 --> 00:45:03,550 ขลุ่ยโดย [ไม่ได้ยิน] ที่เป็น longtime-- ที่ 789 00:45:03,550 --> 00:45:07,101 เป็นสมาชิกเก่าแก่ของ ภาควิชาดนตรีที่นี่ผมคิดว่า 790 00:45:07,101 --> 00:45:08,600 ผมไม่แน่ใจว่าที่เขาไปออกไป 791 00:45:08,600 --> 00:45:12,410 แต่เขาก็เป็นที่ปรึกษาของฮาร์วาร์ คีตกวีสมาคมเป็นเวลานาน 792 00:45:12,410 --> 00:45:13,530 คนที่ยอดเยี่ยม 793 00:45:13,530 --> 00:45:16,920 และเขาเขียนเพลงที่มีมาก โน้ตที่ซับซ้อนที่ LillyPond 794 00:45:16,920 --> 00:45:20,500 แต่สามารถจัดการอย่างมาก 795 00:45:20,500 --> 00:45:26,030 >> ดังนั้นเพียงแค่จะให้ความรู้สึกของสิ่งที่ ความสามารถของสิ่งนี้เพื่อ are-- 796 00:45:26,030 --> 00:45:28,960 internals ของ LillyPond มีความซับซ้อนมาก 797 00:45:28,960 --> 00:45:31,060 และคุณสามารถใช้งานได้ เป็นเวลานานรวมทั้ง 798 00:45:31,060 --> 00:45:32,520 สำหรับบางคนที่มีความซับซ้อนสวย สิ่งโดยไม่ได้จริงๆ 799 00:45:32,520 --> 00:45:34,060 ต้องรู้มากเกี่ยวกับพวกเขา 800 00:45:34,060 --> 00:45:38,720 แต่ความคิดพื้นฐานคือว่าบน ระดับต่ำสุดอะตอมของ LillyPonds 801 00:45:38,720 --> 00:45:39,970 มีการบันทึก 802 00:45:39,970 --> 00:45:42,761 หมายเหตุมี บริบทที่เรียกว่าเสียง 803 00:45:42,761 --> 00:45:44,510 ดังนั้นบริบทเสียง โดยทั่วไปสอดคล้อง 804 00:45:44,510 --> 00:45:47,410 เพื่อบรรทัดเดียวของพฤกษ์ 805 00:45:47,410 --> 00:45:49,410 และแล้วบริบทสามารถ ที่มีลำดับชั้น 806 00:45:49,410 --> 00:45:53,590 คนที่อยู่ในระดับที่สูงขึ้นว่า เป็นตัวแทนของพนักงานในการให้คะแนน 807 00:45:53,590 --> 00:45:56,750 หรือกลุ่มขนาดใหญ่เช่น พนักงานหรือพนักงานเปียโนนักร้อง 808 00:45:56,750 --> 00:45:58,990 และแล้วในที่สุด บริบทคะแนนทั้งหมด 809 00:45:58,990 --> 00:46:02,260 และคุณจริงสามารถครอบคลุม คะแนนหลายในหนังสือ 810 00:46:02,260 --> 00:46:05,770 >> และบริบทที่ทุกคนมี จำนวน engravers ที่แนบมา 811 00:46:05,770 --> 00:46:08,340 ถ้าคุณมองผ่าน เนื้อหาของบริบท 812 00:46:08,340 --> 00:46:14,410 และพิมพ์สัญลักษณ์บางอย่างหรือ ระดับหนึ่งของสัญลักษณ์ตามความจำเป็น 813 00:46:14,410 --> 00:46:17,840 ดังนั้นเพื่อบริบทเสียงทุก มี [ไม่ได้ยิน] บันทึก 814 00:46:17,840 --> 00:46:24,270 ช่างแกะสลักที่เป็นพื้นหรือฟังก์ชั่น วัตถุที่เขียนออกทั้งหมดทราบที่ 815 00:46:24,270 --> 00:46:26,290 หัวในส่วนขวาของหน้า 816 00:46:26,290 --> 00:46:29,510 จากนั้นก็มีช่างแกะสลักแหว่งซึ่ง เขียนออกมาจากซอกในพนักงาน 817 00:46:29,510 --> 00:46:31,517 จากนั้นก็มีเครื่องเมตรอนอม ช่างแกะสลักที่ทำเครื่องหมาย 818 00:46:31,517 --> 00:46:33,100 เขียนออกมาในจังหวะเครื่องหมายคะแนน 819 00:46:33,100 --> 00:46:36,410 และสิ่งเหล่านี้พอดีสวย ดีในลำดับชั้น 820 00:46:36,410 --> 00:46:39,500 และมันก็เป็นอย่างมาก ปรับแต่งที่ที่คุณต้องการ 821 00:46:39,500 --> 00:46:42,880 ถ้าคุณต้องการที่จะได้รับสิ่งที่ต้องการที่ 822 00:46:42,880 --> 00:46:45,730 >> ดังนั้นบริบททั้งหมดที่มี จำนวนมากของคุณลักษณะที่แตกต่างกัน 823 00:46:45,730 --> 00:46:52,410 ที่คุณสามารถปรับเปลี่ยนทุกอย่าง ระยะห่างจากแบบอักษรต่างๆ 824 00:46:52,410 --> 00:46:54,942 เลือกขนาดของสิ่งที่ 825 00:46:54,942 --> 00:46:56,900 หากคุณต้องการที่จะทำแม้กระทั่ง สิ่งที่ซับซ้อนมากขึ้น 826 00:46:56,900 --> 00:46:59,210 มีภาษาสคริปต์ที่ฝังตัว 827 00:46:59,210 --> 00:47:01,820 พวกเขาใช้โครงการซึ่ง เป็นภาษาถิ่นของเสียงกระเพื่อม 828 00:47:01,820 --> 00:47:04,960 เหล่านี้อาจจะไม่ หมายถึงอะไรกับคุณ 829 00:47:04,960 --> 00:47:06,900 แต่โดยทั่วไปโครงการ อีกการทำงาน 830 00:47:06,900 --> 00:47:09,500 การเขียนโปรแกรมภาษามากกว่าหรือน้อยกว่า 831 00:47:09,500 --> 00:47:10,800 >> สตีเฟน KREWSON: ผูกใน 832 00:47:10,800 --> 00:47:12,690 >> CONNOR HARRIS: ใช่ 833 00:47:12,690 --> 00:47:15,390 มันเป็นเรื่องที่ดีในการผูกผมคิดว่า 834 00:47:15,390 --> 00:47:20,150 และใช้เป็นเครื่องมือในการเรียนการสอนภาษา, จริงลงมวล Ave. ที่เอ็มไอที 835 00:47:20,150 --> 00:47:26,590 และมันก็เป็นประโยชน์มากสำหรับการ LillyPond ด้วยเหตุผลทางเทคนิคต่างๆ 836 00:47:26,590 --> 00:47:30,317 >> และดังนั้นหากคุณต้องการที่จะทำให้ง่าย ปรับแต่งขึ้นอยู่กับเงื่อนไข, 837 00:47:30,317 --> 00:47:32,900 สำหรับ example-- มีบางอย่าง สภาพของคะแนนที่ได้พบกัน 838 00:47:32,900 --> 00:47:36,495 ปรับเปลี่ยนไป รูปแบบหรือ whatnot-- แล้ว 839 00:47:36,495 --> 00:47:37,620 สิ่งอำนวยความสะดวกเหล่านี้จะมี 840 00:47:37,620 --> 00:47:38,667 พวกเขากำลังมีความซับซ้อน 841 00:47:38,667 --> 00:47:40,250 ดังนั้นนี่คือตัวอย่างรหัสที่ง่ายสวย 842 00:47:40,250 --> 00:47:43,810 มันเป็นห้าสาย 843 00:47:43,810 --> 00:47:46,120 โดยทั่วไปฉันกำหนดสองบุคคลากร 844 00:47:46,120 --> 00:47:46,904 มันอยู่ใน 3/4 845 00:47:46,904 --> 00:47:48,695 พนักงานคนแรกที่มี เครื่องหมายจังหวะที่แนบมา 846 00:47:48,695 --> 00:47:51,110 แต่ที่เกิดขึ้นจริง ไปในการที่จะทำคะแนนทั้งหมด 847 00:47:51,110 --> 00:47:54,960 เพราะเครื่องหมายจังหวะ อยู่ในระดับคะแนน 848 00:47:54,960 --> 00:47:59,044 ช่างแกะสลักเครื่องหมายจังหวะ ที่แนบมากับคะแนนบริบท 849 00:47:59,044 --> 00:48:01,460 มีปุ่มที่แตกต่างกัน เพราะ [ไม่ได้ยิน] แกะสลัก 850 00:48:01,460 --> 00:48:02,710 ที่แนบมาพนักงาน 851 00:48:02,710 --> 00:48:04,441 จริงๆคุณสามารถทำได้คือ 852 00:48:04,441 --> 00:48:06,190 ตัวอย่างที่ผมเขียนคือ จริงใน C ที่สำคัญ 853 00:48:06,190 --> 00:48:07,990 แต่มันก็เป็นเพียงเพื่อ แสดงให้เห็นว่าคุณสามารถมี 854 00:48:07,990 --> 00:48:09,570 คีย์ที่แตกต่างในพนักงานที่แตกต่างกัน 855 00:48:09,570 --> 00:48:15,710 และไวยากรณ์พื้นฐานคือการที่คุณเขียน ทราบชื่อกับ E, F, G, สิ่งที่ 856 00:48:15,710 --> 00:48:18,910 หากคุณต้องการที่จะทำ accidentals, คุณต่อท้ายหรือ ES 857 00:48:18,910 --> 00:48:22,640 นี้เป็นจากชาวดัตช์ การประชุม musicological 858 00:48:22,640 --> 00:48:28,290 >> และจะทำอย่างไรกระโดดคู่ที่คุณต้องใช้ เครื่องหมายเหล่านี้ติ๊กเครื่องหมายจุลภาคหรือเครื่องหมายวรรคตอน 859 00:48:28,290 --> 00:48:30,580 ญาติก็หมายความว่า สิ่งที่คุณมีบันทึก 860 00:48:30,580 --> 00:48:34,080 มันจะถูก plaec ในโดยอัตโนมัติ คู่ที่ใกล้เคียงกับก่อนหน้านี้หนึ่ง 861 00:48:34,080 --> 00:48:37,624 และถ้าคุณต้องการที่จะข้ามไปมากกว่า fifth-- กล่าวว่าหนึ่งในห้าหรือ more-- 862 00:48:37,624 --> 00:48:39,165 แล้วคุณจะต้องใช้ [ไม่ได้ยิน] 863 00:48:39,165 --> 00:48:42,580 แต่อย่างอื่นที่คุณจะได้ไม่ต้อง ระบุคู่ของทุกบันทึกเดียว 864 00:48:42,580 --> 00:48:46,130 >> และญาติซ​​ีที่สำคัญและ C คุณเพียงแค่ระบุกลาง c 865 00:48:46,130 --> 00:48:48,630 และ C ฐานบันทึกครั้งแรกโดยเฉพาะอย่างยิ่ง 866 00:48:48,630 --> 00:48:55,020 แล้วคุณมีบุคคลากรเหล่านี้ที่จัดระเบียบ ทั้งสองเสียงหรือตัวอย่างของเพลง 867 00:48:55,020 --> 00:48:56,730 และคุณมีคะแนน 868 00:48:56,730 --> 00:48:58,440 และที่มีลักษณะเช่นนี้ 869 00:48:58,440 --> 00:49:01,780 870 00:49:01,780 --> 00:49:05,380 >> หากคุณต้องการที่จะใช้เวลาที่จะ คัดลอกตัวอย่าง LillyPond ว่า 871 00:49:05,380 --> 00:49:07,530 โค้ดบนก่อนหน้านี้ เลื่อนลงที่นี่และคุณ 872 00:49:07,530 --> 00:49:09,030 สามารถเขียนให้ตัวเอง LillyPond 873 00:49:09,030 --> 00:49:11,280 ฉันรู้ว่าเราได้มีบางสิ่งบางอย่าง ที่มีลักษณะเป็นจำนวนมากเช่นนี้ 874 00:49:11,280 --> 00:49:17,236 875 00:49:17,236 --> 00:49:19,610 เพื่อให้มีเทคโนโลยีอื่น เรียกว่า XML เพลงการบำรุงรักษา 876 00:49:19,610 --> 00:49:22,030 โดยคนที่แตกต่างกันอย่างสิ้นเชิง 877 00:49:22,030 --> 00:49:28,150 XML เป็นข้อมูลเกี่ยวกับใจ structure-- ฉัน ไม่ควรจะพูดว่าข้อมูล structure-- พูด 878 00:49:28,150 --> 00:49:29,580 การเรียงลำดับคำอุปมาของแผนที่ 879 00:49:29,580 --> 00:49:33,800 และก็ออกแบบมาเพื่อถือ ข้อมูลแบบลำดับชั้นได้เป็นอย่างดี 880 00:49:33,800 --> 00:49:37,050 HTML, เช่นเป็นชนิดของ XML 881 00:49:37,050 --> 00:49:41,090 และคุณสามารถบอก XML เพราะพวกเขา มีทั้งหมดวงเล็บมุมและมุม 882 00:49:41,090 --> 00:49:44,700 เครื่องหมายวงเล็บเฉือน เขตข้อมูลที่แสดง 883 00:49:44,700 --> 00:49:47,390 >> ฉันไม่ได้มีรหัส เช่นจาก XML เพลง 884 00:49:47,390 --> 00:49:50,450 คุณสามารถค้นหาได้ด้วยตัวคุณเอง 885 00:49:50,450 --> 00:49:53,735 โดยทั่วไปเหตุผลที่คุณอาจต้องการ การใช้ XML เป็นเวทีกลาง 886 00:49:53,735 --> 00:49:55,980 เป็นครั้งแรกของทั้งหมดก็ รูปแบบการแลกเปลี่ยน 887 00:49:55,980 --> 00:50:02,301 สำหรับพื้น every-- ฉันไม่ควรจะพูด ทุกครั้ง แต่จำนวนมากของคะแนนที่แตกต่างกัน 888 00:50:02,301 --> 00:50:02,800 นักเขียน 889 00:50:02,800 --> 00:50:04,966 ดังนั้นถ้าคุณเขียนเพลง XML ไม่เพียง แต่สามารถ LillyPond 890 00:50:04,966 --> 00:50:08,080 อ่านมันด้วยความช่วยเหลือของ auxilary นี้ โปรแกรมที่เรียกว่า XML ดนตรี LY, 891 00:50:08,080 --> 00:50:11,360 แต่ยังสามารถอ่านตอนจบ มันเลียสามารถอ่านได้ 892 00:50:11,360 --> 00:50:14,770 ขึ้นอยู่กับว่าวัตถุภายในของคุณ ลำดับชั้นของการทำงานสำหรับตัวแทนของเพลง 893 00:50:14,770 --> 00:50:18,820 มันอาจจะง่ายต่อการเขียนออกมา เพื่อ XML เพลงมากกว่าที่จะ LillyPond 894 00:50:18,820 --> 00:50:22,410 และเพียงแค่พึ่งพา XML เพลง LY เพื่อที่จะทำแปลง 895 00:50:22,410 --> 00:50:24,282 >> ฉันไม่คิดว่า [ไม่ได้ยิน] มี XML เพลง 896 00:50:24,282 --> 00:50:25,490 สตีเฟน KREWSON: มันไม่ได้ 897 00:50:25,490 --> 00:50:26,340 คนที่ทำงานเกี่ยวกับมันแม้ว่า 898 00:50:26,340 --> 00:50:27,090 >> CONNOR HARRIS: OK 899 00:50:27,090 --> 00:50:31,040 Euterpea ไม่ได้ ฟังก์ชั่นการส่งออกเพลง XML ยัง 900 00:50:31,040 --> 00:50:35,340 ถ้าคุณต้องการความคิดโครงการสุดท้าย อาจจะได้รับในการติดต่อกับพวก 901 00:50:35,340 --> 00:50:38,620 ที่รู้สตีเฟ่นและ พวกเขาสามารถใช้ความช่วยเหลือของคุณ 902 00:50:38,620 --> 00:50:40,992 >> สตีเฟน KREWSON: ฉันจะรักว่า 903 00:50:40,992 --> 00:50:43,450 CONNOR HARRIS: นอกจากนี้โดยทั่วไป ทุกภาษาโปรแกรม 904 00:50:43,450 --> 00:50:46,610 ที่มีมูลค่าเกลือ แล้วมีห้องสมุดของ XML, 905 00:50:46,610 --> 00:50:51,030 เพื่อให้คุณสามารถแปลงภายในทั้งหมด เพลงของคุณลงในวัตถุบางอย่าง 906 00:50:51,030 --> 00:50:54,120 ที่ห้องสมุด XML สามารถเขียน เห็นว่าจะต้องน้อยลง 907 00:50:54,120 --> 00:50:57,470 การปรับเปลี่ยนโครงสร้างภายในของคุณ สำหรับสิ่งที่เพลงวัตถุที่คุณ 908 00:50:57,470 --> 00:51:00,310 ต้องการที่จะเขียนกว่าการเขียนมัน โดยตรงใน LillyPond จะ 909 00:51:00,310 --> 00:51:04,380 แล้วก็พิมพ์ออกมาด้วย XML ที่มี ห้องสมุด XML ในภาษาของคุณ 910 00:51:04,380 --> 00:51:07,260 ซึ่งจะรับประกันได้ว่ามันเป็น syntactically ถูกต้องและทุกอย่าง 911 00:51:07,260 --> 00:51:08,720 แล้วแปลงเป็น LillyPond 912 00:51:08,720 --> 00:51:11,060 เทคโนโลยีดังนั้นคุณอาจต้องการที่จะ มองเข้าไปในถ้าคุณกำลังทำอะไรบางอย่าง 913 00:51:11,060 --> 00:51:11,650 อย่างนี้. 914 00:51:11,650 --> 00:51:14,490 915 00:51:14,490 --> 00:51:16,370 >> [ไม่ได้ยิน] อีก เทคโนโลยี auxilarry 916 00:51:16,370 --> 00:51:21,700 นี้เป็นพื้นธิเทค หรือเทคสตูดิโอสำหรับ LillyPond 917 00:51:21,700 --> 00:51:25,380 ดังนั้นจึงมีความช่วยเหลือเกี่ยวกับ ไวยากรณ์ที่มีแม่แบบ 918 00:51:25,380 --> 00:51:28,770 สำหรับต่างๆที่พบบ่อย การรวมกันของตราสาร 919 00:51:28,770 --> 00:51:32,780 จะช่วยให้หน้าจอแยกเพื่อให้ดู คุณสามารถมีรหัสของคุณในหน้าต่างเดียว 920 00:51:32,780 --> 00:51:37,350 และ PDF ในหน้าต่างอื่นและ คลิกที่สถานที่ในรูปแบบไฟล์ PDF 921 00:51:37,350 --> 00:51:40,650 เพื่อข้ามไปที่เกี่ยวข้อง จุดในรหัสต้นฉบับของคุณ 922 00:51:40,650 --> 00:51:45,330 นี้จะเป็นประโยชน์มากขึ้นถ้าคุณกำลังจริง เขียน LillyPond ไฟล์ตัวเอง 923 00:51:45,330 --> 00:51:47,400 กว่าถ้าคุณกำลังสร้าง พวกเขาโปรแกรม 924 00:51:47,400 --> 00:51:51,230 แต่อีกครั้งก็ สิ่งที่มีประโยชน์ที่จะมี 925 00:51:51,230 --> 00:51:51,970 >> ที่ดี 926 00:51:51,970 --> 00:51:55,860 resources-- อีกฉันจะเพียง ผ่านไปอย่างรวดเร็วนี้ 927 00:51:55,860 --> 00:52:01,270 LillyPond manuals-- LillyPond มี เอกสารที่ดีในเว็บไซต์ของตน 928 00:52:01,270 --> 00:52:02,270 พวกเขามีการกวดวิชา 929 00:52:02,270 --> 00:52:03,478 พวกเขามีการอ้างอิงไวยากรณ์ 930 00:52:03,478 --> 00:52:07,010 พวกเขามีหลายร้อยตัวอย่าง สิ่งเล็ก ๆ น้อย ๆ 931 00:52:07,010 --> 00:52:09,930 yo อาจจำเป็นต้องทำเพื่อแสดงให้เห็นถึง ความสามารถต่างๆ 932 00:52:09,930 --> 00:52:12,250 หากคุณต้องการที่จะใช้ ภาษาสคริปต์ 933 00:52:12,250 --> 00:52:14,740 หรือทำอย่างกว้างขวางมากขึ้น การปรับแต่งแล้วมี 934 00:52:14,740 --> 00:52:16,730 อ้างอิง internals ที่ URL ที่ 935 00:52:16,730 --> 00:52:21,950 หากคุณต้องการที่จะใช้ XML เพลงมี URL ที่ musicxml.com/tutorial 936 00:52:21,950 --> 00:52:27,960 >> และแล้วถ้าคุณต้องการที่จะเรียนรู้รูปแบบ เพราะคุณจริงต้องการที่จะใช้ 937 00:52:27,960 --> 00:52:30,960 สิ่งอำนวยความสะดวกในการเขียนสคริปต์ LillyPond, แล้วมี [ไม่ได้ยิน] ที่เรียกว่า 938 00:52:30,960 --> 00:52:32,918 ที่มีโครงสร้างการตีความ โปรแกรมคอมพิวเตอร์ 939 00:52:32,918 --> 00:52:35,820 ซึ่งไม่เพียง แต่สอง ที่ยิ่งใหญ่ที่สุดตำรา CS เคยเขียนกัน 940 00:52:35,820 --> 00:52:39,770 หาฉันหลังจากนั้นถ้าคุณต้องการที่จะรู้ว่า สิ่งที่ผมคิดว่าหนึ่งที่ยิ่งใหญ่ที่สุด is-- 941 00:52:39,770 --> 00:52:43,580 แต่ก็ยังดีมาก รู้เบื้องต้นเกี่ยวกับภาษาที่เหมาะสม 942 00:52:43,580 --> 00:52:46,630 คุณจะไม่จำเป็นต้องมากกว่า ส่วนแรก 943 00:52:46,630 --> 00:52:47,827 >> และที่มัน 944 00:52:47,827 --> 00:52:48,410 มีคำถามอะไรไหม? 945 00:52:48,410 --> 00:52:54,068 946 00:52:54,068 --> 00:52:57,972 >> นักเรียน: ฉันสามารถดาวน์โหลด สร้างของคุณ Frere ฌาคส์ 947 00:52:57,972 --> 00:53:01,050 เพื่อให้สามารถนำมาใส่ใน iPod ของฉัน? 948 00:53:01,050 --> 00:53:07,574 >> สตีเฟน KREWSON: ดีคุณสามารถเขียน ออกไปบางไฟล์ wav ใน Euterpea 949 00:53:07,574 --> 00:53:08,490 และคุณมีรหัส 950 00:53:08,490 --> 00:53:10,000 มันอยู่ใน GitHub 951 00:53:10,000 --> 00:53:15,590 ทำให้รูปแบบของคุณเอง Frere ฌาคส์โดยใจรัง CS50 952 00:53:15,590 --> 00:53:17,095 มันจะดี 953 00:53:17,095 --> 00:53:18,220 CONNOR HARRIS: ใคร? 954 00:53:18,220 --> 00:53:20,261 สตีเฟน KREWSON: เราจำเป็น กลองเบสดีขึ้นอีกด้วย 955 00:53:20,261 --> 00:53:21,935 มันไม่ดีจริงๆ 956 00:53:21,935 --> 00:53:26,565 >> นักเรียน: Euterpea ได้ไม่เพียง แต่ ด้านองค์ประกอบ แต่ signal-- 957 00:53:26,565 --> 00:53:27,440 สตีเฟน KREWSON: ใช่ 958 00:53:27,440 --> 00:53:30,100 ในความเป็นจริงการทำงานของผม ทำใน Euterpea เมื่อฉัน 959 00:53:30,100 --> 00:53:33,450 เอา this-- มี จบการศึกษาหลักสูตรที่มหาวิทยาลัยเยลที่ 960 00:53:33,450 --> 00:53:35,900 ใช้ it-- อยู่ในการสังเคราะห์เสียง 961 00:53:35,900 --> 00:53:39,810 เพื่อให้มีจริงๆ วิธีที่ดีโดยใช้ลูกศร 962 00:53:39,810 --> 00:53:46,150 และบางส่วนของโน้ตที่เราเห็นของ ฟังก์ชั่นการเขียนร่วมกันของสัญญาณ 963 00:53:46,150 --> 00:53:50,610 โดยเฉพาะอย่างยิ่งเสียงเบสให้มากที่สุด พวกเขาเป็นเพียงคลื่นไซน์ที่เรียบง่าย 964 00:53:50,610 --> 00:53:54,240 แต่ถ้าคุณเริ่มเขียนเหล่านั้น ในรูปแบบการเขียนโปรแกรมที่แปลก 965 00:53:54,240 --> 00:54:00,010 คุณจะได้รับเสียงบ้า ผลกระทบเช่นน้ำตกแปลก 966 00:54:00,010 --> 00:54:04,640 คุณสามารถสร้างความกล้าหาญมาก เสียงที่มีจำนวนมากของการปรับ 967 00:54:04,640 --> 00:54:07,730 >> ผมทำโครงการเกี่ยวกับเม็ด การสังเคราะห์ซึ่งเป็น 968 00:54:07,730 --> 00:54:12,290 บางแห่งในระหว่างเอฟเอ็มและการสุ่มตัวอย่าง 969 00:54:12,290 --> 00:54:15,230 คุณจะใช้ขนาดเล็กมาก ตัวอย่างเล็ก ๆ น้อย ๆ แล้ว 970 00:54:15,230 --> 00:54:20,440 รวมกับการจัดเรียงของบางอย่าง โมดูเลเตอร์และสร้างเสียงที่ดียิ่งขึ้น 971 00:54:20,440 --> 00:54:24,900 นอกจากนี้เรายังได้สร้างแบบจำลองทางกายภาพดังนั้น พยายามที่จะคิดเกี่ยวกับฟิสิกส์ 972 00:54:24,900 --> 00:54:29,410 และ psychoacoustics ของสิ่งที่ต้องการ แตรและคิดเกี่ยวกับวิธีการ 973 00:54:29,410 --> 00:54:32,320 เสียงที่ใหญ่ปิด ระฆังแตร 974 00:54:32,320 --> 00:54:35,200 และอะคูสติกของ ห้องพักและการสร้างแบบจำลอง 975 00:54:35,200 --> 00:54:40,195 ว่าด้วยการ oscillators พื้นฐาน 976 00:54:40,195 --> 00:54:47,690 977 00:54:47,690 --> 00:54:48,940 CONNOR HARRIS: ขอบคุณมาก 978 00:54:48,940 --> 00:54:50,140 ขอบคุณที่มา. 979 00:54:50,140 --> 00:54:52,400 และผมยินดีเสมอที่จะ โดยใช้คำถาม email-- 980 00:54:52,400 --> 00:54:55,020 connorharris@college.harvard.edu 981 00:54:55,020 --> 00:54:57,020 >> สตีเฟน KREWSON: ใช่ stephen.krewson@yale.edu 982 00:54:57,020 --> 00:54:58,810 983 00:54:58,810 --> 00:55:00,360 เย็น. 984 00:55:00,360 --> 00:55:01,667