Passing functions to other functions is only half the power of first c การแปล - Passing functions to other functions is only half the power of first c ไทย วิธีการพูด

Passing functions to other function

Passing functions to other functions is only half the power of first class functions. Functions may also act as factories , and produce new functions as their results. The ability to create functions with arbitrary capabilities within the program machinery can be quite powerful. For example, one might computationally produce a new comparison function that, in turn, was passed to the qsortF function in the previous panel.

Often, a means of creating a function is with lambda notation. Many languages with functional features use the word "lambda" as the name of the operator, but Haskell uses the backlash character (because it looks somewhat similar to the Greek letter, lambda). A lambda notation looks much like a type signature. The arrow indicates that a lambda notation describes a function from one type of thing ( the thing following the backlash) to another type of thing (whatever follows the arrow).

The example factory mkFunc packs a fair amount into a short description. The main thing to notice is that the lambda indicates a function from n to the result. By the type signature, everything is an Int, although type inference would allow a broader type. The form of the function definition is primitive recursive. An empty list produces a result of zero. A non-empty list produces either the result given by its head pair, or the result that would be produced if only its tail is considered (and the tail eventually shrinks to empty by recursion).

Modules and Program Structure
Basic syntax
So far in this tutorial, we have seen quite a bit of Haskell code in an informal way. In this final section, we make explicit some of what we've been doing. In fact, Haskell's syntax is extremely intuitive and straightforward. The simplest rule is usually to "write what you mean."

Haskell and literate Haskell
The examples in this tutorial have used the standard Haskell format. In the standard format, comments are indicated with a double dash to their left. All comments in the examples are end-of-line comments, which means that everything following a double dash on a line is a comment. You may also create multi-line comments by enclosing blocks in the pair "{-"and"-}". Standard Haskell files should be named with .hs extension.

Literate scripting is an alternative format for Haskell source files. In files named with Literate scripting is an alternative format for Haskell source files. In files named with the .lhs extension, all program lines begin with the greater than character. Everything that is not a program line is a comment. This style places an emphasis on program description over program implementation: It looks something like:

The offside rule
Sometimes in Haskell programs, function definitions will span multiple lines and consist of multiple elements. The rule for blocks of elements at the same conceptual level is that they should be indented more. As soon as an outdent occurs, further lines are promoted back up a conceptual level. In practice, it is obvious, and Haskell will almost always complain on errors.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
ผ่านฟังก์ชั่นการทำงานอื่น ๆ ที่เป็นเพียงครึ่งหนึ่งของพลังของฟังก์ชั่นชั้นแรก ฟังก์ชั่นยังอาจทำหน้าที่เป็นโรงงานผลิตและฟังก์ชั่นใหม่เป็นผลของพวกเขา ความสามารถในการสร้างฟังก์ชั่นที่มีความสามารถโดยพลการภายในเครื่องจักรโปรแกรมจะค่อนข้างมีประสิทธิภาพ ตัวอย่างเช่นคอมพิวเตอร์หนึ่งอาจจะผลิตฟังก์ชั่นการเปรียบเทียบใหม่ที่หันถูกส่งผ่านไปยังฟังก์ชั่น qsortf ในแผงหน้าที่แล้ว.

มักจะหมายถึงการสร้างฟังก์ชั่นคือสัญกรณ์แลมบ์ดา หลายภาษาที่มีคุณสมบัติการทำงานใช้คำว่า "แลมบ์ดา" เป็นชื่อของผู้ประกอบการ แต่ Haskell ใช้ตัวอักษรฟันเฟือง (เพราะดูเหมือนค่อนข้างคล้ายกับตัวอักษรกรีกแลมบ์ดา) สัญกรณ์แลมบ์ดามีลักษณะเหมือนพิมพ์ลายเซ็นลูกศรชี้ให้เห็นว่าสัญกรณ์แลมบ์ดาอธิบายฟังก์ชั่นจากประเภทหนึ่งของสิ่ง (สิ่งต่อไปนี้ฟันเฟือง) ไปอีกประเภทหนึ่งของสิ่ง (สิ่งดังต่อไปนี้ลูกศร).

mkfunc โรงงานตัวอย่างแพ็คจำนวนเงินที่ยุติธรรมเป็นคำอธิบายสั้น ๆ สิ่งสำคัญที่ต้องแจ้งให้ทราบล่วงหน้าคือแลมบ์ดาแสดงให้เห็นการทำงานจาก n ถึงผลที่ตามมา โดยพิมพ์ลายเซ็นทุกอย่างเป็น int,แม้ว่าจะอนุมานชนิดจะช่วยให้ประเภทที่กว้างขึ้น รูปแบบของการกำหนดฟังก์ชันดั้งเดิม recursive รายการที่ว่างเปล่าผลิตผลของศูนย์ รายการที่ไม่ว่างเปล่าผลิตทั้งผลที่ได้รับจากคู่หัวหรือผลลัพธ์ที่จะผลิตถ้าเพียงหางของมันคือการพิจารณา (และหางในที่สุด shrinks ที่ว่างเปล่าโดยการเรียกซ้ำ).

โมดูลและโครงสร้างโปรแกรม
ไวยากรณ์พื้นฐาน
เพื่อให้ห่างไกลในการกวดวิชานี้เราได้เห็นค่อนข้างบิตของรหัส Haskell ในทางที่ไม่เป็นทางการ ในส่วนสุดท้ายนี้เราทำให้ชัดเจนบางส่วนของสิ่งที่เราได้รับการทำ ในความเป็นจริง, ไวยากรณ์ของ Haskell เป็นอย่างมากที่ใช้งานง่ายและตรงไปตรงมา กฎที่ง่ายที่สุดคือมักจะ "เขียนสิ่งที่คุณหมายถึง."

Haskell และรู้ Haskell
ตัวอย่างในการกวดวิชานี้ได้ใช้รูปแบบมาตรฐาน Haskellในรูปแบบมาตรฐานที่จะมีการแสดงความเห็นด้วยเส้นประสองด้านซ้าย ความคิดเห็นทั้งหมดในตัวอย่างความคิดเห็นสิ้นสุดของบรรทัดซึ่งหมายความว่าทุกอย่างที่ต่อไปนี้คู่ชนในบรรทัดที่เป็นความคิดเห็น คุณยังอาจสร้างความเห็นหลายสายโดยแนบบล็อกในคู่ "{-" และ "-}" ไฟล์มาตรฐาน Haskell ควรตั้งชื่อที่มี. ขยาย HS.

สคริปต์การศึกษาเป็นรูปแบบทางเลือกสำหรับ Haskell ไฟล์ที่มา ในชื่อไฟล์ที่มีการเขียนสคริปต์การศึกษารูปแบบทางเลือกสำหรับ Haskell ไฟล์ที่มาเป็น ในชื่อไฟล์ที่มี. ขยาย LHS, ทุกสายโปรแกรมเริ่มต้นด้วยตัวอักษรมากกว่า ทุกอย่างที่ไม่ได้เป็นเส้นโปรแกรมเป็นความเห็นนะ รูปแบบนี้ให้ความสำคัญในรายละเอียดมากกว่าโปรแกรมการใช้งานโปรแกรม:ดูเหมือนสิ่งที่ต้องการ:

กฎล้ำหน้า
บางครั้งในโปรแกรม Haskell นิยามฟังก์ชั่นจะครอบคลุมหลายบรรทัดและประกอบด้วยหลายองค์ประกอบ กฎสำหรับบล็อกขององค์ประกอบที่ระดับแนวความคิดเดียวกันคือการที่พวกเขาควรจะเว้า ๆ แหว่ง ๆ เร็วที่สุดเท่าที่เยื้องเกิดขึ้นเส้นต่อไปจะเลื่อนตำแหน่งให้กลับขึ้นไปในระดับความคิด ในทางปฏิบัติจะเห็นได้ชัด,และ Haskell มักจะบ่นเกี่ยวกับข้อผิดพลาด.
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ผ่านฟังก์ชันฟังก์ชันอื่น ๆ จะใช้พลังงานเพียงครึ่งของฟังก์ชันชั้น ฟังก์ชันอาจยังเป็นโรงงาน และสร้างฟังก์ชันใหม่เป็นผลลัพธ์ของการ ความสามารถในการสร้างฟังก์ชันที่ มีความสามารถกำหนดภายในเครื่องจักรโปรแกรมได้อย่างมีประสิทธิภาพค่อนข้าง ตัวอย่าง หนึ่งอาจผลิตฟังก์ชันเปรียบเทียบใหม่ที่ เปิดใน computationally ถูกส่งผ่านไปยังฟังก์ชัน qsortF ในก่อนหน้านี้แผง

บ่อย วิธีการสร้างฟังก์ชันคือสัญกรณ์แลมบ์ดา ภาษาต่าง ๆ มีลักษณะการทำงานใช้คำ "แลมบ์ดา" เป็นชื่อของตัวดำเนินการ แต่ Haskell ใช้อักขระแบคแลช (เนื่องจากมันมีลักษณะค่อนข้างคล้ายกับอักษรกรีก แลมบ์ดา) สัญลักษณ์แลมบ์ดาลักษณะเหมือนลายเซ็นชนิด ลูกศรแสดงว่า สัญลักษณ์แลมบ์ดาอธิบายฟังก์ชันชนิดของสิ่งที่สิ่งต่อไปนี้แบคแลช) ชนิดอื่น (สิ่งตามลูกศร) สิ่งนั้น

mkFunc โรงงานตัวอย่างชุดสมควรเป็นคำอธิบายโดยย่อ สิ่งสำคัญจะสังเกตได้ว่า แลมบ์ดาที่ระบุว่า ฟังก์ชันจาก n เพื่อผล โดยลายเซ็นชนิด จึงเป็น Int แม้ว่าข้อชนิดจะอนุญาตชนิดกว้าง แบบฟอร์มคำนิยามฟังก์ชันซ้ำดั้งเดิมได้ รายการที่ว่างเปล่าก่อให้เกิดผลลัพธ์เป็นศูนย์ รายการไม่ว่างทำให้เกิดผลที่กำหนด โดยคู่ใหญ่ หรือผลที่จะผลิตถ้าเดียวถือหาง (และหางก็ลดขนาดให้ว่างเปล่า) โดยสอบ

โครงสร้างโปรแกรมและโมดูล
ไวยากรณ์พื้นฐาน
เพื่อให้ห่างไกลในกวดวิชานี้ เราได้เห็นของรหัส Haskell เป็นทาง ในส่วนนี้สุดท้าย เราได้ชัดเจนบางที่เราได้รับการทำ ในความเป็นจริง ไวยากรณ์ของ Haskell ไม่มากใช้งานง่าย และตรงไปตรงมา กฎที่ง่ายที่สุดคือมักจะ "เขียนสิ่งที่คุณหมายความว่า "

Haskell และ literate Haskell
ตัวอย่างในกวดวิชานี้ใช้รูปแบบ Haskell มาตรฐาน ในรูปแบบมาตรฐาน ข้อคิดเห็นจะแสดง ด้วยเส้นประคู่อยู่ทางด้านซ้าย ข้อคิดเห็นในตัวอย่างจะสิ้นสุดของบรรทัดข้อคิดเห็น ซึ่งหมายความ ว่า ทุกอย่างตามเส้นประสองบรรทัดเป็นข้อคิดเห็น นอกจากนี้คุณยังสามารถสร้างหลายบรรทัดข้อคิดเห็น ด้วยบล็อกในคู่ "{-" และ"-}" ได้ ควรชื่อมาตรฐาน Haskell แฟ้ม มีนามสกุล.hs.

สคริปต์ literate เป็นรูปแบบอื่นสำหรับ Haskell แฟ้มต้นฉบับ ในชื่อ มี Literate สคริปต์แฟ้มเป็นรูปแบบอื่นสำหรับแฟ้มต้นฉบับ Haskell ในแฟ้มที่ชื่อกับนามสกุล.lhs รายการโปรแกรมทั้งหมดเริ่มต้น ด้วยยิ่งกว่าอักขระ ทุกอย่างที่ไม่ใช่โปรแกรมบรรทัดข้อคิดเห็นได้ ลักษณะนี้เน้นอธิบายโปรแกรมผ่านโปรแกรมใช้งาน: มันดูเหมือน:

กฎล้ำ
บางโปรแกรม Haskell ฟังก์ชันกำหนดจะครอบคลุมหลายบรรทัด และประกอบด้วยหลายองค์ประกอบ กฎสำหรับบล็อกขององค์ประกอบในระดับแนวคิดเดียวกันคือ ว่า พวกเขาควรจะย่อหน้าขึ้น เป็น outdent เกิดขึ้น เพิ่มเติมบรรทัดถูกเลื่อนขึ้นสำรองข้อมูลระดับแนวคิด ในทางปฏิบัติ ไม่ชัดเจน และ Haskell มักจะบ่นเกี่ยวกับข้อผิดพลาด
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ผ่านการทำงานในหน้าที่อื่นเป็นเพียงใช้พลังงานเพียงครึ่งหนึ่งของการทำงานระดับ First Class ฟังก์ชันการทำงานอาจจะทำหน้าที่เป็นโรงงานผลิตและฟังก์ชันใหม่เป็นผลของพวกเขายัง ความสามารถในการสร้างการทำงานด้วยความสามารถตาม อำเภอ ใจอยู่ ภายใน เครื่องจักรโปรแกรมที่ได้รับจะเปี่ยมด้วย ประสิทธิภาพ มาก ตัวอย่างเช่นอาจจะทำให้เกิดการเปรียบเทียบฟังก์ชันใหม่ที่หนักหน่วงกำลังส่งผ่านมายังฟังก์ชัน qsortf ในแผงควบคุมก่อนหน้าที่.

มักหมายถึงการสร้างฟังก์ชันที่พร้อมด้วยเสียง Lambda หลาย ภาษา ที่มีคุณสมบัติใช้งานการใช้คำว่า" lambda "เป็นชื่อของผู้ให้บริการแต่ Eddie Haskell ' s ใช้แนบแน่น(เพราะมันมีลักษณะคล้ายกับจดหมายกรีกที่ lambda ) เสียง Lambda ที่มีลักษณะคล้ายกับลายเซ็นพิมพ์ลูกศรชี้ขึ้นระบุว่าที่เสียง Lambda ที่อธิบายถึงฟังก์ชั่นที่จาก ประเภท ที่หนึ่งของเรื่อง(สิ่งที่แนบแน่นที่ต่อไปนี้)ในการพิมพ์หนึ่งของเรื่อง(ไม่ว่าโดยมีรายละเอียดดังนี้ลูกศร)

mkfunc โรงงานตัวอย่างเช่นที่ชุดจำนวนมากที่เข้าไปในรายละเอียดเพื่อไปถึงได้ไม่ไกลนัก เรื่องสำคัญที่จะต้องแจ้งให้ทราบล่วงหน้าว่า lambda ที่แสดงถึงการทำงานที่จาก N ถึงผลที่ได้ โดยลายมือชื่อพิมพ์ที่มีทุกสิ่งทุกอย่างที่สนามบินนานาชาติแม้ว่าจะพิมพ์ลงความเห็นได้ก็จะอนุญาตให้ใช้ ประเภท ที่กว้าง รูปแบบของความละเอียดฟังก์ชันที่มีการสอบถามแบบสอบถามซ้ำแบบดั้งเดิม รายการจะว่างลงที่ผลิตผลของศูนย์ รายการไม่ว่างที่จะมีทั้งผลที่ได้รับโดยคู่หัวหรือผลที่จะได้ผลิตขึ้นมาถ้าเท่านั้นหางของมันได้รับการพิจารณาให้(และหางได้ในท้ายที่สุดหดตัวในการเทโดยการสอบถามซ้ำ)

และโมดูลโปรแกรมโครงสร้างขั้นพื้นฐาน

ไวยากรณ์ดังนั้นไกลในการสอนนี้เราได้เห็นค่อนข้างของรหัส Eddie Haskell ' s ในทางในแบบซึ่งไม่เป็นทางการ ในส่วนสุดท้ายนี้เราจะทำอย่างชัดเจนบางอย่างของสิ่งที่เราทำมา ในความเป็นจริงแล้วคำสั่งของ Eddie Haskell ' s เป็นอย่างมากและใช้งานได้ง่ายไม่ยุ่งยากซับซ้อน กฎข้อที่ง่ายที่สุดคือโดยปกติในการ"เขียนในสิ่งที่คุณหมายความว่า"ตัวอย่าง Eddie Haskell ' s
ซึ่งจะช่วยให้ได้รับประกาศนียบัตรและ

Eddie Haskell ' s ในการสอนการใช้นี้มีการใช้รูปแบบ Eddie Haskell ' s แบบมาตรฐานในรูปแบบมาตรฐานความคิดเห็นจะแสดงด้วยเครื่องหมายขีดคั่นแบบเดี่ยวขนาดใหญ่หนึ่งเตียงไปทางซ้ายของตน แสดงความคิดเห็นทั้งหมดในตัวอย่างที่มีความคิดเห็น End - of - Line ซึ่งหมายความว่าทุกอย่างต่อไปนี้:ขีดกลางดับเบิลคลิกที่สายที่มีความคิดเห็น คุณอาจสร้างความคิดเห็นหลายสายโดยการใส่บล็อกในคู่ที่"{ - "และ" - }" Eddie Haskell ' s มาตรฐานไฟล์ควรจะได้รับการตั้งชื่อกับนามสกุล HS .

สคริปต์ได้เป็นรูปแบบทางเลือกสำหรับไฟล์ต้นฉบับ Eddie Haskell ' s ในไฟล์ชื่อพร้อมด้วย Active scripting เป็นทางเลือกที่ได้รับประกาศนียบัตรรูปแบบของไฟล์แหล่ง Eddie Haskell ' s ในไฟล์ชื่อพร้อมด้วยนามสกุล lhs บรรทัดทั้งหมดของโปรแกรมเริ่มต้นด้วยตัวอักษรมากกว่าที่มากกว่า ทุกสิ่งทุกอย่างที่ไม่ใช่สายโปรแกรมที่มีความคิดเห็น มีสไตล์แห่งนี้คือสถานที่ที่โดดเด่นในรายละเอียดโปรแกรมมากกว่าการนำไปใช้งานโปรแกรมมีลักษณะบางสิ่งบางอย่างเช่นกฎข้อที่:

ที่ล้ำหน้า
บางครั้งในโปรแกรม Eddie Haskell ' s คำนิยามของฟังก์ชันจะ SPAN หลายคู่สายและประกอบไปด้วยองค์ประกอบหลายคน กฎข้อที่ได้สำหรับช่วงตึกขององค์ประกอบทางความคิดในระดับเดียวกันกับที่ตามมาก็คือควรจะมีทรวงอกเพิ่มเติม ทันทีที่ outdent เกิดขึ้นบรรทัดต่อไปมีการส่งเสริมให้กลับไปได้ระดับความคิดอันหนึ่ง ในทางปฏิบัติมันเป็นเรื่องที่เห็นกันชัดๆEddie Haskell ' s และจะบ่นกับข้อผิดพลาดแทบจะทุกครั้ง.
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: