stanford-oval/wikipedia huggingface dataset:
香港教育史
第二次世界大戰以後

1945年香港重光後，重建教育事業面臨種種困難，包括校舍被毀、實驗室被破壞、圖書館書籍散失、桌椅校具不敷應用等問題。中國大陸又迅速爆發內戰，大量居民湧入香港，令學校數目和學額遠遠供不應求，香港出現嚴重的失學問題。香港政府恢復對學校的管理控制後，隨即在1947年公佈了多項《學校應守規則》以加強對學校的管理。 原名為旺角勞工子弟學校及勞工子弟中學的創知中學於1946年創辦，為首間為解決工人子弟失學問題的勞校教育機構。 政府更於1950年擬定了「十年建校計劃」，希望在十年內提供足夠的學位收容適齡的小學兒童和希望升讀中學的學生。但這項計劃因受到中國大陸政權的變更而無法適應。
除了港府的措施，民間團體也有相應行動。戰後很多民間慈善團體、宗教團體、工會、同鄉會都相繼在舊式樓宇開辦了不少義學和識字班。如大埔官立學校免費識字夜校、東蓮覺苑寶覺女子職業學辦、鴨脷洲漁民學校等。而在大埔和元朗兩區也開辦了兩所成人夜校，提供了逾一千個學位。這些班都是免費或只徵收極低廉的學費的，幫助解決了不少青少年失學的問題。同一時期，私立學校和親北京的左派學校也紛紛創辦。至1960年代初，香港政府忙於消除左派學校的影響，採取各種措施打壓，如遞解香島中學校長出境和收回旺角勞工子弟學校及漁民學校的直接管理權等；至後期才轉為滿足社會的需求。
1950年代開始，香港人口再有急速的增長，為應付這股壓力，政府迫於無奈邀請不同的國際專家為香港教育作詳細的報告，以計畫擴展中小學。第一份為1951年12月發表、對制定殖民地教育政策有重要影響的《菲沙報告書》。報告書建議港府利用當前的中國政治對香港教育影響的形勢、以教育來加強英國的影響，並加強對教育的控制和管理，以及大力推行英文教學，從而提升及維持香港和英國之間一種親密的關係。例如當時成立的委員會提出去國族化的教育方針，讓中文和中史教育減低中國的影響，讓學生學習更中立的語文文化和歷史。這份報告書也提出要發展小學和師範教育。政府因應形勢，在1955年8月開始推行《小學擴展的七年計劃》，包括建立五間官立小學，大量增加小學學位。在這個時代背景下，一些傳統學校（例聖若瑟英文小學與中學）及天台小學就此誕生。
而1963年和1965年更是擴展計劃的里程碑；1963年港府發表《教育委員會馬殊－森遜報告書》，落實取消小學入學試、擬定資助則例、擴展新界中學學位、減低師生比例等措施。政府隨後在此報告書的基礎上，於1965年6月發表《香港教育政策白皮書》，建議讓80%兒童可以入讀由政府資助的小學，及使約15%的小學畢業生能升讀官立中學、資助中學及若干選定的私立中學。這份報告書奠定了以後十多年的政策走向，即以學位數量為政策發展的目標和以發展由政府資助的學校為主線。
1970年10月，港督戴麟趾於《施政報告》宣布翌年起實施強迫小學義務教育，並制定《入學令》，規定對不送子女上學的家長之刑罰。麥理浩隨後上任，更致力把普及教育推廣至初中。1973年8月，教育委員會發表《教育委員會對香港未來十年內中等教育擴展計劃報告書》，目標在1981年能讓80%少年獲得資助初中學位。但麥理浩對報告書提出的步伐不甚滿意，於是在立法局成立專責小組，最後於1974年10月完成了《香港未來十年之中學教育》報告書，目標於1979年推行九年免費教育，以及建議取消中學入學試、推行浮動班制 和買位制 等。其後，麥理浩突然於1977年10月5日宣布將九年免費教育提前到1978年施行。據研究發現，這是因為當時香港法定最低勞工年齡（14歲）比國際慣例（15歲）要低，港督為挽回當時面對的「國際信用危機」而倉卒決定的。 這項政策使得每一個小學畢業生都能升讀初中接受教育。
由於港府目標在擴展中小學教育，高中和專上教育的發展在1990年代前仍然非常有限，在此時期比較突破性的是香港中文大學的成立。早於1951年，港督葛量洪委任賈士域（Keswick）就香港高等教育作出研究報告，當時的結果是不主張另設一所新的中文大學。雖然1950年代香港開始出現一些專上學院，如香港浸會學院，但這些學院的功能並不能與大學相提並論。至1959年，港督柏立基邀請富爾敦（J. S. Fulton）來港考察，並建議香港大學開設中文部，但被港大拒絕。[來源請求]於是他提出把當時的三所中文專上學院合併，以組成中文大學。中文大學的籌備工作於1961年6月正式展開，港督任命關祖堯為籌備委員會主席。香港中文大學終於1963年10月17日正式成立，打破了英國普遍在殖民地只設一所大學的傳統。而高中的發展則要等到1977年《高中及專上教育綠皮書》的發表才開始，綠皮書提出適齡少年應有50%獲得資助的學位，但受到社會上普遍的反對。1978年10月，《高中及專上教育發展白皮書》 就把數字由50%提高至60%，以抒民憤。直至1988年，這項政策仍未有重大改變。
這一時期更發展了香港歷史上首次的師範和職業教育。香港政府於1951年9月成立葛量洪師範專科學校[來源請求]，用以培養初中和小學的文憑教師。至1960年，由於學額擴展，師資培訓也要作出相對的配套，成立柏立基師範專科學校。而隨着香港工業化，職業教育也相對獲得重視。政府於1957年12月將早於1937年成立的香港工業專門學院從灣仔活道「紅磚屋」遷往紅磡新校舍，培養技術員和技工；學校於1972年3月24日改組為香港理工學院。為回應1974年的教育白皮書，港府積極發展工業學院，除了早於1969年成立的摩理臣山工業學院外，教育司署於1975年建立葵涌工業學院和觀塘工業學院、1976年開辦黃克兢工業學院，以及1979年創立李惠利工業學院。 在香港訓練局的建議之下，建造業訓練局和製衣業訓練局也相繼在1976年8月17日和10月19日開幕。
除以上種種外，1970年代的香港政府也要開始面對日漸敢言的教育界人士。從前，政府成立的教育委員會主要成員都是政府的夥伴，例如教會；決策權往往掌握在教育司的手中。惟隨着津貼學校數量的增加，政府成為教師的大僱主，教師因而開始關心自身權益，為政府添加了一股壓力。1973年，文憑教師 採取工業行動，爭取薪酬權益；13個教師職工會更因這次行動而聯合起來，成了香港教育專業人員協會的雛型。教協是眾多壓力團體規模最龐大，系統架構最完整健全的一個組織，對於教協的功能定位，創會秘書潘天賜表示對於社會公義的議題，教協充當支持者的角色，而關於教育的議題則會一馬當先，擔任發起人和主導者的角色。教協代表教育界的基層教師，一直為教師爭取合理權益而努力。教育團體公開發表言論也越來越多，報紙甚至出現了教育版討論教育政策。但是港府的決策機制並沒有作出調整，容納社會的意見，這造成了不少示威遊行，激化了民間的反政府情緒。這種情況要到1981年港督麥理浩邀請經濟合作發展組織（OECD）派出國際顧問團到香港考察，才出現了戲劇性的變化。
1973年，文憑教師發起罷課，是香港教育歷史上的大事件。挑戰殖民地政府對教學上箝制的抗爭運動。同樣在七十年代初期，學生及護士亦發起連串運動，其抗爭手法及抗爭目標均為教師抗爭立下先列，且起前驅探路之功用。在該時期的數次抗爭運動中，教師運動之人數最多，引發社會關注度亦最高，還在該時期成立了教協，把運動成果制度化。
主權移交前

面臨主權移交，中英兩國領導人一致同意透過外交途徑解決香港問題。1984年，兩國簽署《中英聯合聲明》，確認中華人民共和國從1997年7月1日起恢復對香港行使主權。自此，香港進入主權移交的過渡期，教育發展亦不例外。這個時期，在各方環境因素的配合下，香港的教育得到迅速的發展，尤其在專上教育和教育行政方面。
1981年6月，港府發表《香港教育制度全面檢討》報告書，為來港的國際顧問團提供參考資料。至1982年11月，國際顧問團 完成考察，發表《香港教育透視》報告書；雖然沒有新意，但因為對香港的教育政策作出了可觀的評估而獲得教育界的好評，並為港府所接納。在七十年代末實行九年免費教育後，人們對教育的需求也相對的增加，高中的入學率不斷的提高。官立學校的學位在數字上仍然維持著1978年發表的白皮書的60%，但很多學生在中三後都轉到私立學校繼續升學，1980年時的純入學率就已經超過90%。而事實上，根據政府教育統籌委員會的統計，1983年高中的純入學率亦已經達到了84.6%。因此，根據國際顧問團建議而成立的教育統籌委員會在其第一號報告書 中就因勢利導將政府資助高中學位提高到84.6%，全面普及了高中教育；預科的學位則維持在高中學位的四分之一。
可是，隨著高中普及教育的推行，預科和大學入學之間就形成了嚴重的瓶頸。1981年，大學學位就只能滿足2%的適齡青年。根據1978年的白皮書，往後10年的高等教育學位每年只能維持3%的增長，進度非常緩慢。到80年代中期，港府在其財政預算中透露，將逐年增加大學入學率，並在2000年達到14.5%。1988年，港督衛奕信突然在其施政報告中宣布加快高等教育的步伐，把14.5%目標提前到1994年，2000年則定為18%。1989年六四事件後，港府再度加快步伐，宣布把2000年18%的目標提前到1994年實現。當年的入學率只有6%，換句話說就是要在5年內把入學率提升3倍。
為了實現擴充大學學額的目標，港府除了增加現有兩所大學的學位外，還計劃興建香港科技大學作為香港的第三間大學，香港科技大學於1991年起開始收生。另外，港府於1980年代初決定開辦一所繼香港理工學院後的第二所專上理工學府，香港城市理工學院於1984年10月22日正式開辦，設有會計、商業和管理、語言、社工、電腦和數理等六個學系。1980年代末期的高等教育加速政策，普遍認為是商界的催促和政治的考慮而衍生出來的，商界擔心在1997年後，人才流動性減低會導致人才短缺，因此希望香港能自給自足；而港府經過六四事件的衝擊，也明白到民主發展要依靠高等教育，於是高速發展高等教育，香港理工學院、城市理工學院和香港浸會學院更於1993年獲准升格為大學。1987年10月，香港總督在施政報告落實籌建香港公開進修學院，提供持續教育及大學學位課程，香港公開進修學院籌備委員會於1988年成立，學院於1989年起收生，並於1997年升格為大學。1991年，政府批准嶺南學院兩個榮譽文憑升格為學位課程，1995年遷入屯門虎地的新校舍，嶺南學院逐漸邁向正名大學之路。
1990年代高等學歷普及化的政策造成大學畢業生供過於求的現象，也為香港帶來了大學質素和畢業生出路等等的問題，是90年代至今也要面對的主要問題。
值得注意的是，職業教育在八十年代也有相當顯著的發展。1982年2月，香港訓練局改組為職業訓練局，並在其下成立一個由勞工處中的訓練部門（主要負責職業訓練中心和學徒訓練計劃）和教育署中的工業教育部門（主要負責工業學院）合併而成的工業教育及訓練署。職訓局隨後在原有的5間工業學院的基礎下，再成立3間工業學院，分別是1986年創辦的屯門工業學院和沙田工業學院，以及1988年建立的柴灣工業學院。為了培養藝術人才，港府於1984年創立香港演藝學院，設舞蹈學院、戲劇學院、音樂學院和科藝學院。
1990年11月22日，教育統籌委員會發表第四號報告書，其中提到了「學習目標及目標為本評估」（TTRA）的建議，為90年代教育政策的一大爭議。在建議推出後，教育署計劃在20間小學進行試驗，但得出的調查指三分之一的學校認為計劃未如理想，教育署遂提供支援。因為教育界的巨大反響，教育署在1993年4月23日宣布押後計劃，並成立諮詢委員會。1994年10月20日，教育署公佈推行「目標為本課程」（TOC）的時間表，決定1995年再在70間小學的一年級試驗，並於2000年9月拓展至整個小學階段。教育界對這個計劃意見仍然甚多，認為計劃對教學並沒有多大的改善，也只會增加教師的工作量，要求推行教育改革。
學前教育方面，殖民地政府一向採取放任政策,直至1983年《小學教育及學前服務白皮書》中，才草擬有關批准幼稚園繼續為三歳兒童開辦幼兒班的草案，而幼稚園須按《幼兒中心條例的要求》註冊辧理。由於當時白皮書制定幼稚園為一至兩年制，因此當時大部分幼稚園都奉行兩年制。及後配合社會發展改為三年。
在教育決策方面，經國際顧問團的建議而成立的教育統籌委員會紓解了一些七十年代末以來教育界的反政府情緒。1986年立法局改組，首次出現由選舉產生的代表，教協主席司徒華因此代表教育界進入了政府架構，港府後來更委任他進入教統會。至90年代，政黨的影響力越來越大，扭轉了政府一直以來對教育的主導性。政黨可以左右立法局的討論，並利用財政問題改變教育政策的方向，1991年否決津貼中學參加「直接資助計劃」就是個好例子。同時，政黨也可以透過立法局獲得大量的政府政策資訊，在擁有權利和資訊的優勢下，政黨對教育政策的影響就非常大。
主權移交後

条目：香港英文授課中學
1997年7月1日，香港主權正式移交，根據《基本法》實行港人治港、高度自治，同時保障實行原來的教育制度，並由特區政府在原有的教育制度下發展教育。行政長官董建華在其每年的《施政報告》中都用大量篇幅解釋教育政策和措施，並著手推行教育改革。而其中最為爭議的就是學校課堂語言的問題。特區政府早於主權移交初期便強調母語教學，要在1998年全面落實，但准許一些學校向教學語言指引評審委員會申請豁免，100間中學達到要求可以繼續運用英文作為教學語言。而同時也有24間中學落敗，其中20間上訴，期間批評審議不公平，缺乏透明度，並作出抗議。1998年3月13日，20間上訴中學的其中14間得直，特許使用英文為教學語言的中學數目增至114間，其餘300多間中學則必須使用母語教學，並承諾三年後檢討。可是，三年期滿後政府卻宣布延遲三年再作檢討，至2003年檢討仍未開始，最終才落實在2009年進行檢討。母語教學的政策帶來不少問題，其中最為顯著的是標籤效應，獲批准使用英文作教學語言的中學在這政策中彷彿成了名校，家長普遍追捧這類中學，以子女入讀英文中學為榮。此外，教育界普遍也對母語教學的成效意見分歧，有些認為母語教學能加強學生學習的能力，有些則擔心政策下香港學生的英文水平會有所下降。2007年高考放榜，英語運用科及格率跌至12年新低，只達73.9%，較2004年母語教學前的高考下跌了5.5%。津貼中學議會和英文中學聯會均認為英文水平下跌是無可避免的；近年會考英文科成績有進步，只是因為不少學生都報考較淺的課程甲，因此母語教學的影響至高考才見明顯，並激發社會大規模對母語教學未能提升英文水平的討論。2008年，教育局終決定微調教學語言政策，但具體措施仍在研究當中。
此外，香港教師語文能力評核（俗稱基準試）的推行也引起軒然大波。教育統籌局在2000年5月根據教統會於1995年12月發表的第六號報告書 中提出的「為所有教師訂定基本語文水準」政策擬定具體做法，教師工會發起教師聯署抗議和罷考，並組織遊行集會。教統局局長在聽取教師和多個教育團體的意見後，檢討修訂有關政策和措施，並延至2001年3月正式舉行基準試。其後的基準試，特別是英文科，合格率普遍偏低，而未達標的教師則必須在2005/2006年度達標，否則就會面臨調職甚至失業。這項考試被教師們抗議為針對年長的語文教師而設，增添了教師的壓力；而社會人士和教育界人士也批評考試透明度低，對中小學的語文教師「一刀切」。
在學制方面，特區政府亦計劃香港脫離英式學制，實行跟亞洲大部份主要的國家尤其是東亞，包中國大陸所採用的「三三四」學制，即初中三年、高中三年、大學四年；因應學制改革，多個新高中科目也會同時推出。有評論分析，實行「三三四」學制是含有政治上非殖民化的考量，代表香港脫離英國殖民影響，背靠中國，因此反對「三三四」學制的意見並不多。 但教育界擔心改制後的新課程由於未必能與海外中學畢業證書接軌，而國際間也尚未有一個普遍通行的預科文憑標準，使將來學生到海外升學時可能會有認受性的問題。2007年，特首曾蔭權更在其《施政報告》中落實於2008/2009學年起提供全面免費教育，即小一至中六（或中七；舊制下13年，新制下12年）。政府又鼓勵各大學增辦副學士課程。特首董建華於2000年的施政報告指出要在2010年或之前讓六成高中學生接受大專教育，副學士應運而生。根據2001年的統計，八間高等院校的副學士課程、高級文憑課程和其他非學位課程的學生總人數多達13,213人。但現時的學士學位只有800多個可供副學士畢業生報讀，也令教育界擔心副學士學生升學所遇到的瓶頸問題。
除以上爭議外，小班教學、教師工作量、大學合併、大學資源與獨立自主問題（參見香港教育學院風波）、優質教育基金的審批等等均是激烈的討論議題。而需要訴諸法律解決的，更包括校本條例。自2000年教育改革推出後，已有十多名教師輕生；香港中文大學香港健康情緒中心一項調查亦指出教師不少壓力是來自教育改革，反映了教改進程對教師的龐大影響。在往後的日子，教育被認為仍然是特區政府要面對的重要課題。
21世紀

在21世紀，香港學制及教育生態亦出現多次重大的改變。
21世紀 > 自願優化班級結構計劃

由於香港移民潮及出生率偏低和持續下降而引發的殺校潮，教育局於2010年推行的自願優化班級結構計劃政策。
21世紀 > 幼稚園學券制

2006年，香港特區政府宣佈為香港幼稚園引入學前教育學券計劃，形式資助每名幼兒10000元港幣用以支付學前教育費用，但只限非牟利幼稚園學生家長可以申請；2007年9月香港特區政府推行學前教育學券計劃，間接為非牟利幼稚園提供資助。
21世紀 > 三三四新高中學制

条目：三三四高中教育改革
以往，香港採用英國的三二二三學制的三年初中、兩年高中、兩年預科及三年大學本科課程，經過此改變之後，將改為東亞地區（中國大陸、台灣、日本及韓國）、加拿大及美國等國所採用的三年初中、三年高中及四年的大學本科課程。政府亦推行各個新的科目，並聲稱此舉可以給予學生能夠報讀更多實用的課程，以及能更專注於學習及生活，而並非對考試技巧的操練。政府已在2009年新學年起推行「三三四」學制。可是，學界擔心新課程由於未必與海外中學畢業證書接軌，而國際間現時尚未有一個普遍通行的預科文憑標準，使將來學生離港升學時可能會有認受性的問題，因此香港考試及評核局正和不同的海外大學商討認可香港中學文憑考試為入學資格。
公民與社會發展科為2021/22學年起在中四級開始推行的「優化高中四個核心科目」之一，修訂自2009年起推行的通識教育課程，將於2024年香港中學文憑考試正式進入考試內容。
21世紀 > 三三四新高中學制 > 末代會考

因應三三四高中教育改革，故2010年的會考為最後一屆開放予應屆學校考生香港中學會考。此屆會考被稱為「末代會考」。不過，真正的最後一屆會考是在2011年，因為考評局已表示會於該年舉行一屆會考讓考生重考部分科目，然而所有考生只能以自修生身份報考，而不會再開放予學校考生應考，亦只能報讀四年制大學。
是屆會考共有58,699名考生獲得入讀中六的最低資格(語文科以外的科目取得不低於4科及格，或3科及格但5分以上的成績)；而有26,583名應考至少六科考生成績最佳六科的總積分達14分或以上，但亦有6,448名考生報考的6科全部不合格，只得零分。
21世紀 > 殺校風波

由於入讀中一的學生人數正在下降，由2010年至2016年下降21,500人，因此情況令人關注，有見及此，教育局決定暫停在2010年殺校一年。
21世紀 > 大專升格為大學 > 樹仁升格為大學

条目：香港樹仁大學
於1971年創校時因堅持提供四年制大學課程，不符合香港大學學位標準三年制的規定，一度只能以學院名義營運。2006年12月19日，學院獲行政長官會同行政會議通過正名動議，正式承認其大學地位，成為香港首間私立大學，並於2007年2月14日正式更名。
21世紀 > 大專升格為大學 > 香港教育學院正名為香港教育大學

条目：香港教育學院和香港教育大學
早於2007年6月當時的香港教育學院（教院）通過發展藍圖向政府呈交正名大學的申請，2012年香港教育學院才向教資局提交《正名大學最後準備》的報告，二年後2014年也向教育局提交了大學名稱申請，最終於2016後行政長官會同行政會議批准向當時的教院授予大學名銜 ─ 「香港教育大學」及「The Education University of Hong Kong」。隨着《2016年香港教育學院(修訂)條例》於二零一六年五月二十七日刊憲，教院已正名為「香港教育大學」。前後共花費了九年的時間。這正名確認香港教育大學將更能發揮其為本地及區域教育發展擔當更有效的角色。 （页面存档备份，存于）
21世紀 > 大專升格為大學 > 恆生管理學院升格為香港恆生大學

条目：香港恆生大學和恆生管理學院
香港恆生大學最早可以追溯到1980年，當時命名為恆生商學書院，為當時的學生提供文憑與副學士學位課程。然而，恆生商學書院因應時代的變遷於2010年改組成恆生管理學院。同時根據《專上學院條例》正式註冊成為一所非牟利私立專上學院，並開始提供本科及以上之學位課程。而2018年10月30日，恆生管理學院獲香港特別行政區批准，正式更名為「香港恆生大學」，成為香港第二所私立大學。 （页面存档备份，存于）
21世紀 > 大學改名 > 香港公開大學更名為香港都會大學

条目：香港都會大學
香港公開大學，於2021年9月1日起，正式改名為香港都會大學。
21世紀 > 公民與社會發展科

条目：公民與社會發展科
自2021/22學年起，中四級開始推行的「優化高中四個核心科目」，取消通識教育作為核心課程，並增設公民與社會發展科為核心課程。首屆公民與社會發展科的香港中學文憑公開考試將於2024年開考。
21世紀 > 中學文憑試丙類其他語言科目改革

在2012年至2024年的文憑試「丙類其他語言科目」，是採用劍橋大學國際考評部(Cambridge Assessment International Education) 的高級補充程度（AS level）試卷及評級。由2025年起，考評局將取消這個安排，並改以採用當地官方的國家文化機構的官方語言考試直接評核，並增設韓語，取消印地語和烏爾都語，期望增加相關考試的認受性。
參看

香港歷任教育首長
香港教育
參考文獻 > 相关书目

-{zh;zh-hans;zh-hant|
皇家書館則例
香督令第十五號
香督令第十六號}-
阮柔：《香港教育：香港教育制度之史的研究》，香港進步教育出版社，1948。
方美賢：《香港早期教育發展史》，香港中國學社，1975。
邱小金：《香港教育發展：百年樹人》，香港市政局，1993。 ISBN 962-7039-29-2
明基全：《教不倦：新界傳統教育的蛻變》，香港區域市政局，1996。 ISBN 962-7213-21-7
齊紅深：《日本侵華教育史》，北京人民教育出版社，2002。 ISBN 7-107-18321-4
陸鴻基：《從榕樹下到電腦前：香港教育的故事》，香港進一步多媒體有限公司，2003。 ISBN 962-8326-51-1
吳灞陵、吳國基：《香港年鑑》，香港華僑日報社，1947-1994。
香港政府新聞處：《香港年報》，香港政府印務局。
Anthony Sweeting: Education in Hong Kong Pre-1841-1941: Fact and Opinion (Materials for a History of Education in Hong Kong), Hong Kong University Press, 1990. ISBN 962-209-258-6
Anthony Sweeting: Education in Hong Kong 1941 to 2001: Visions and Revisions, Hong Kong University Press, 2004. ISBN 962-209-675-1
操太聖： 香港教育制度史研究（1840-1997）。
陸鴻基： 香港辦學制度回顧，原載香港《思》神學雙月刊第92期，2004年11月。
黃庭康：〈國家權力形構與華文學校課程改革－戰後新加坡及香港的個案比較〉，《教育與社會研究》，2002，第4期，頁121－123。
|  论 编亚洲各国家和地區教育史 |
| --- | --- | --- |
| 聯合國會員國 |  阿富汗  亞美尼亞  亞塞拜然  巴林  孟加拉國  不丹  汶萊  柬埔寨  中华人民共和国  賽普勒斯  埃及  格鲁吉亚  印度  印度尼西亞  伊朗  伊拉克  以色列  日本  約旦  哈萨克斯坦      科威特  吉尔吉斯斯坦  寮國  黎巴嫩  马来西亚  馬爾地夫  蒙古  缅甸  尼泊爾  阿曼  巴基斯坦  菲律賓  卡塔尔  俄羅斯  沙烏地阿拉伯  新加坡  斯里蘭卡  敘利亞  塔吉克斯坦  泰國  東帝汶  土耳其  土库曼斯坦  阿联酋  乌兹别克斯坦  越南  葉門  |  |
| 聯合國观察员 |  巴勒斯坦  |  |
| 未受国际普遍承认国家 |  阿布哈茲  中華民國（臺灣）  北賽普勒斯  南奥塞梯  |  |
| 属地和其他特殊政區 |  阿克罗蒂里和泽凯利亚  英属印度洋领地  圣诞岛  科科斯（基林）群岛  香港  澳门  |  |
覲廷書室
1900年的皇仁書院
英華書院
英皇書院
日占時期的指定中小學教科書
前身為觀塘工業學院的香港專業教育學院觀塘分校
港青基信書院，是東涌內唯一一所以英文授課的中學
单子 (函数式编程)

在函数式编程中，单子（monad）是一种抽象，它允许以泛型方式构造程序。支持它的语言可以使用单子来抽象出程序逻辑需要的样板代码（英语：）。为了达成这个目标，单子提供它们自己的数据类型（每种类型的单子都有特定的类型），它表示一种特殊形式计算，与之在一起的有两个过程，一个过程用来包装单子内“任何”基本类型的值（产生单子值），另一个过程用来复合（英语：）那些输出单子值的函数（叫做单子函数）。
单子的概念和术语二者最初都来自范畴论，这里的单子被定义为具有额外结构的函子。开始于1980年代晚期和1990年代早期的研究，确立了单子可以将看似完全不同的计算机科学问题置于一个统一的函数式模型之下。范畴论还提供了叫做单子定律的一些形式要求，任何单子都应当满足它并可以用它来验证单子代码。
通过单子，编程者可以把复杂的函数序列变成简洁的管道，它抽象出了辅助数据管理、控制流或副作用。单子可以简化范围宽广的问题，比如处理潜在未定义值（英语：）（通过Maybe单子），或将值保持在一个灵活而形式正确的列表中（使用List单子）。因为单子使得某种计算的语义明确，它们还可以用来实现便捷的语言特征。一些语言比如Haskell，甚至在它们的核心库中为通用单子结构提供预制的定义和常用实例。
概述

单子可以通过定义一个类型构造子m和两个运算即unit和bind来建立。C. A. McCann解释说：“对于单子m，类型m a的值，表示可以在这个单子上下文内访问的类型a的值。”
unit（也叫做return），接受一个类型a的值，把它们包装成使用这个类型构造子建造的类型m a的“单子值”。
bind（典型的表示为>>=），接受一个在类型a上的函数f，并应用f于去包装的值a，并可把f的结果处理成单体值m a。在后面的从函子推导章节有可作为替代的等价构造，使用join函数替代了bind算子。
通过这些元素，编程者可以复合出一个函数调用的序列（管道），在一个表达式中通过一些bind算子把它们链接起来。每个函数调用转变它的输入普通类型值，而bind算子处理返回的单子值，它被填入到序列中下一个步骤。
在每对复合的函数调用之间，bind算子>>=可以向单子值m a注入在函数f内不可访问的额外信息，并沿着管道传递下去。它还可进行细致的执行流控制，比如只在特定条件下调用函数，或以特定次序执行函数调用。
Maybe单子例子

下面的快捷伪代码例子展示编程者使用单子的动机。未定义的值或运算，是健壮的软件应当准备好做出优雅处理的一个特殊问题。
完成这个目标的第一步是建立一个可选类型，它标记一个值，要么承载某个类型T（T可以是任何类型）的值，要么没有承载值。新的类型将叫做Maybe T，而这个类型的值，可以包含要么类型T的值，要么空值Nothing。类型T的值x，若定义并用于Maybe上下文，则叫做Just x。这么做是通过区分一个变量，是处在承载了有定义的值的情况，还是处在未定义的情况，来避免混淆。
data Maybe T = Just T | Nothing
Maybe T可以被理解为一种“包装”类型，把类型T包装成具有内建异常处理的一种新类型，尽管不承载关于异常成因的信息。
在下列的伪代码中，前缀着m的变量有针对某种类型T的类型Maybe T。例如，如果变量mx包含一个值，那么它是Just x，这里的变量x有类型T。λx -> ...是匿名函数，它的形式参数x的类型是推论而来，而∘是函数复合算子。
另一个改进是，函数通过Maybe类型，能管理简单的检查异常：一旦某个步骤失败，就短路并返回Nothing；如果计算成功则，返回正确的值而无需再评论。
加法函数add，在做二个Maybe值mx和my的加法之时，就实现了上述改进，它可以如下这样定义：
add :: Maybe Number -> Maybe Number -> Maybe Number
add mx my  = ...
    if mx is Nothing then
        ... Nothing
    else if my is Nothing then
        ... Nothing
    else
        ... Just (x + y)
书写函数来逐一处理Maybe值的各种情况可能相当枯燥，并且随着定义更多函数而变得更甚。将多个步骤链接起来的运算，是减轻这种状况的一种方式，通过使用中缀算子如mx >>= f，甚至可以直观的表示出，将每个步骤得出的（可能未定义的）结果，填入下一步骤之中。因为每个结果在技术上被插入到另一个函数之中，这个算子转而接受一个函数作为一个形式参数。由于add已经指定了它的输出类型，保持这个算子的灵活性，而接受输出与其输入不同类型的函数应当没有什么伤害：
>>= :: Maybe T -> (T -> Maybe U) -> Maybe U
(mx >>= f) = ...
    if mx is (Just x) then
        ... f(x)    -- f返回类型Maybe U的定义值
    else
        ... Nothing -- f不返回值
在具有>>=可用时，add可以被精制为更紧凑的表述：
add mx my  = 
    mx >>= λx ->
        (my >>= λy ->
            Just (x + y))
这更加简洁，而一点额外的分析就能揭示出它的强大之处。首先，Just在add中扮演的唯一角色，就是将一个低层值标记（tag）为也是Maybe值。为了强调Just通过包装低层值而在其上施加作用，它也可以被精制为函数，比如叫做eta：
eta :: T -> Maybe T
eta x  =  Just x
整体情况是这两个函数>>=和eta被设计用来简化add，但是他们明显的不以任何方式依赖于add的细节，只是有关于Maybe类型。这些函数事实上可以应用于Maybe类型的任何值和函数，不管底层的值的类型。例如，下面是来自Kleene三值逻辑的一个简洁的NOT算子，也使用了相同的函数来自动化未定义值：
trinot :: Maybe Boolean -> Maybe Boolean
trinot mp  =  mp >>= λp -> (eta ∘ not) p
可以看出来Maybe类型，和与之一起的>>=和eta，形成了单子。尽管其他单子会具体化不同的逻辑过程，而且一些单子可能有额外的属性，它们都有三个类似的构件（直接或间接的）服从这个例子的纲要。
定义

对函数式编程中的单子的更常用的定义，比如在上面的例子中用到的，实际上基于了Kleisli三元组（英语：），而非范畴论的标准定义。两个构造可以证明在数学上是等价的，任何定义都能产生有效的单子。给定任何良好定义的基本类型T、U，单子构成自三个部份：
类型构造子 M，建造一个单子类型M T
类型转换子，经常叫做unit或return，将一个对象x嵌入到单子中：
unit(x) :: T -> M T}}
组合子，典型的叫做bind（约束变量的那个bind），并表示为中缀算子>>=，去包装一个单体变量，接着把它插入到一个单体函数/表达式之中，结果为一个新的单体值：
(mx >>= f) :: (M T, T -> M U) -> M U
但要完全具备单子资格，这三部份还必须遵守一些定律：
unit是bind的左单位元：
unit(a) >>= λx -> f(x) ↔ f(a)
unit也是bind的右单位元：
ma >>= λx -> unit(x) ↔ ma
bind本质上符合结合律：
ma >>= λx -> (f(x) >>= λy -> g(y)) ↔ (ma >>= λx -> f(x)) >>= λy -> g(y)
在代数上，这意味任何单子都引起一个范畴（叫做Kleisli范畴（英语：））和在函子（从值到计算）的范畴上的幺半群，具有单子复合作为二元算子和unit作为单位元。
单子为有价值的技术提供了机会，超出了只是组织程序逻辑。单子可以为有用的语法特征奠定基础工作，而它们的高级和数学本质能实现重大的抽象。
语法糖do表示法

尽管公开的使用bind通常就行得通，很多编程者偏好模仿指令式语句的语法（在Haskell中称为“do表示法”，在OCaml中称为“perform表示法”，在F♯中称为“计算表达式”，在Scala中称为“for推导式”）。这只是将单子管道伪装成代码块的语法糖；编译器会悄悄的将这些表达式转换成底层的函数式代码。
将上述的Maybe单子例子中的add函数伪码转换成Haskell代码来用行动展示这个特征。非单子版本的add用Haskell写出来如下这样：
add mx my =
    case mx of
    Nothing -> Nothing
    Just x  -> case my of
               Nothing -> Nothing
               Just y  -> Just (x + y)
在使用单子的Haskell中，return是unit的标准名字，加上必须显式处置的lambda表达式，即使多了这些技术，Maybe单子使得定义更加清晰：
add mx my =
    mx >>= (\x ->
        my >>= (\y ->
            return (x + y)))
使用do表示法，可以进一步精炼成非常直观的序列：
add mx my = do
    x <- mx
    y <- my
    return (x + y)
甚至通用单子定律自身都可以用do表示法来表达：
do { x <- return v; f x }            ==  do { f v }
do { x <- m; return x }              ==  do { m }
do { y <- do { x <- m; f x }; g y }  ==  do { x <- m; y <- f x; g y }
尽管方便，开发者应当记住这种块风格只是语法上的并可外观上替代为单子(甚至非单子的CPS）表达式。使用bind来表达单子管道仍在很多情况下是更加清晰的，一些函数式编程拥戴者提议，由于块风格允许初学者存续来自指令式编程的习惯，应当避免缺省的而只在明显更优越的时候使用它。
历史

在编程中术语“单子”（monad）实际上最早可追溯至APL和J编程语言，它们趋向于是纯函数式的。但是，在这些语言中，“monad”仅是只接受一个形式参数的函数的简称（有二个形式参数的函数叫做“dyad”）。
数学家Roger Godement（英语：）最初在1950年代晚期公式化单子概念（起绰号为“标准构造”），而术语“monad”成为主导要归功于范畴学家桑德斯·麥克蘭恩。但是，上述的使用bind定义的形式，最初由数学家Heinrich Kleisli（英语：）在1965年描述，用来证明任何单子都可以特征化为在两个（协变）函子之间的伴随。
开始于1980年代，单子模式的模糊概念在计算机科学社区中浮出水面。依据编程语言研究者Philip Wadler，计算机科学家John C. Reynolds（英语：）于1970年代和1980年代早期，在他讨论传递续体风格（英语：）的价值的时候，预见到了它的一些方面，范畴论作为形式语义学的丰富来源，和在值和计算之间的类型区别。研究性语言Opal（英语：），它活跃设计直到1990年，还有效的将I/O基于在单子类型之上，但是这个联系在当时没有实现。
计算机科学家Eugenio Moggi（英语：）最早明确的将范畴论的单子联系于函数式编程，在1989年于讨论会论文之中，随后在1991年还有更加精制的期刊提交。在早期的工作中，一些计算机科学家使用范畴论推进为lambda演算提供语义。Moggi的关键洞察是真实世界程序不只是从值到另外的值的函数，而是形成在这些值之上计算的变换。在用范畴论术语形式化的时候，这导致的结果是单子作为表示这些计算的结构。
其他一些人以这个想法为基础并进行了推广，包括Philip Wadler和Simon Peyton Jones，二者都参与了Haskell规定。特别是，Haskell直到v1.2一直使用有问题的“惰性流”模型来将I/O调和于惰性求值，然后切换到了更灵活的单子接口。Haskell社区继续将单子应用于函数式编程的很多问题中，使用Haskell工作的研究者最终将单子模式推广成广泛的结构层级，包括应用式函子和箭头（英语：）。
首先，使用单子的编程很大程度上局限于Haskell及其派生者，但是由于函数式编程已经影响了其他编程范型，很多语言结合了单子模式（不这么称呼的话也在精神上）。其公式化现已存在于Scheme、Perl、Python、Racket、Clojure、Scala和F#之中，并已经被考虑用于新的ML标准。
用途

单子模式的价值超出了只是压缩代码和提供到数序推理的联系。不管开发者采用的语言或缺省编程范型是什么，遵从单子模式都会带来纯函数式编程的很多利益。通过实化特定种类的计算，单子不仅封装了这个计算模式的冗长细节，而且它以声明式方式来这么做，增进了代码清晰性。因为单子值所显式代表的不只是计算出的值，而是计算出的作用（effect），单子表达式在参照透明位置（英语：）上可以被替代为它们的值，非常像纯表达式能做到的那样，允许了基于重写的很多技术和优化。
典型的，编程者会使用bind来把单子函数链接成一个序列，这导致了一些人把单子描述为“可编程的分号”，参照众多指令式语言使用分号来分割语句。但是，需要强调单子实际上不确定计算的次序；甚至在使用它们作为中心特征的语言中，更简单的函数复合可以安排程序内的步骤。单子的一般效用准确的说在于简化程序的结构并通过抽象来增进关注点分离。
单子结构还可以被看作修饰模式的独特的数学和编译时间变种。一些单子可以传载对函数是不可访问的额外数据，而且一些单子甚至具有在执行上的更细致控制，例如只在特定条件下调用一个函数。因为它们让应用程序员实现领域逻辑，而卸载样板代码至预先开发的模块，单子甚至可以当作面向方面编程的工具。
单子的另一个值得注意的用途，是在其他方面都纯函数式的代码中，隔离副作用，比如输入/输出或可变的状态（英语：）。即使纯函数式语言仍可以不使用单子来实现这些“不纯”计算，特别是通过对函数复合和续体传递风格（CPS）的错综复杂混合。但是使用单子，多数这些脚手架可以被抽象出去，本质上通过提取出在CPS代码中每个反复出现的模式并集束到一个独特的单子之中。
如果一个语言缺省的不支持单子，仍有可能实现这个模式，经常没有多少困难。在从范畴论转换成编程术语的时候，单子结构是泛型概念（英语：）并可以在支持限定的多态的等价特征的任何语言中直接定义。一个概念在操作底层数据类型时保持对操作细节不可知的能力是强大的，然而单子的独特特征和严格行为将它们同其他概念区别开来。
分析

单子模式的利益之一是将数学上的精确性施加到编程逻辑上。不只是单子定律可以用来检查实例的有效性，而且来自有关结构（比如函子）的特征可以通过子类型来使用。
分析 > 从函子推导

尽管在计算机科学中少见，可以直接使用范畴论，它定义单子为有二个额外自然变换的函子。作为开始，一个结构要求叫做map的高阶函数（“泛函”）从而具备函子资格：
但是这不总是一个主要问题，尤其是在单子派生自预先存在的函子的时候，单子马上就自动继承map。 出于历史原因，在Haskell中这个map转而叫做fmap。
单子的第一个变换实际上同于来自Kleisli三元组的unit，但是更密切的服从结构的层级，结果是unit特征化一个应用式函子，这是在单子和基本函子之间的中间结构。在应用式的上下文中，unit有时被称为pure，但是这仍是相同的函数。在这个构造中有不同的地方是定律unit必须满足；因为bind未定义，这个约束转而依据map给出：
从应用式函子到单子的最后跳跃来自于第二个变换join函数，在范畴论中这个自然变换通常叫做μ，它扁平化单子的嵌套应用：
作为特征性函数，join必须还满足三个单子定律的变体：
不管开发者是否直接定义单子或Kleisli三元组，底层的结构都是相同的，二者形式可以轻易的相互导出：
分析 > 例子：List单子

List单子天然的展示了如何手工的从更简单的函子导出单子。在很多语言中，列表结构与很多基本特征一起是预定义的，所以假定List类型构造子和append算子（用中缀表示法表示为++）已经存在于这里了。
将一个平常的值嵌入到列表中在多数语言中也是微不足道的：
自此，通过列表推导式迭代的应用一个函数，看起来就是对bind的一个容易的选择，从而将列表转换成完全的单子。这个方式的困难在于bind预期一个单子函数，它在这种情况下会输出列表自身；随着更多函数的应用，嵌套的列表的层次会累加，要求不止一个基本推导式。
但是，在整个列表上应用任何“简单”函数的过程，也就是map，就直截了当了：
现在，这两个过程已经将List提升为应用式函子。要完全具备单子资格，只需要join的一个正确的表示法来扁平化重复的结构，但是对于列表，这意味着去包装一个外部列表来包含着值的那些内部列表：
结果的单子不只是一个列表，而且在应用函数的时候可以自动调整大小和压缩自身。bind现在可以从一个公式导出，接着被用来通过单子函数的管道向List填入值：
这种单子列表的一个应用是表示非确定性计算（英语：）。List可以持有一个算法中所有执行路径的结果，接着每一步骤压缩自身来忘记那一步导致了这个结果（有时这是同确定性、穷举算法的重要区别）。另一利益是检查可以嵌入到单子中；特定路径可以透明的在它们第一个失败点上被剪除，而不需要重写管道上的函数。
突出List的第二种情况是复合多值函数。例如，一个数的n次复数方根将产生n个不同复数，但是如果另个m方根接受了这些结果，最终复合出的m•n的值应当同一于一次m•n次方根的输出。List完全自动化了这个问题的处置，压缩来自每一步骤的结果成一个平坦的、数学上正确的列表。
更多例子 > IO单子（Haskell）

正如提及过的那样，纯粹的代码不应有不可管理的副作用，但是不妨碍程序“显式”的描述和管理各种作用。这个想法是Haskell的IO单子的中心，在这里一个类型IO a的对象，可以被看作包含了程序外部的世界的当前状态，并计算类型a的一个值。不计算值的计算，也就是过程，有着类型IO ()，它“计算”虚设值()。在编程者bind一个IO值到一个函数的时候，这个函数基于世界的场景（来自用户的输入、文件等）做出决定，接着产生反映新的世界状态（程序输出）的一个单子值。
例如，Haskell有一些函数作用在宽广的文件系统之上，包括有检查一个文件存在的一个函数和删除一个文件的另一函数。二者的类型签名是：
doesFileExist :: FilePath -> IO Bool
removeFile :: FilePath -> IO ()
第一个函数关注一个给定文件是否真的存在，作为结果输出一个布尔值于IO单子之内。第二个函数在另一方面，只关心在文件系统上的起到作用，所以对于IO容器它们的输出为空。
IO不只限于文件I/O；它甚至允许用户I/O，还有指令式语法糖，可以模仿典型的Hello World程序：
main :: IO ()
main = do
    putStrLn "Hello, world!"
    putStrLn "What is your name, user?"
    name <- getLine
    putStrLn ("Nice to meet you, " ++ name ++ "!")
不加语法糖，代码可以转写为如下单子管道（在Haskell中>>是bind的一种变体，用在只有单子作用是紧要的而底层结果可以丢弃的时候）：
main :: IO ()
main =
    putStrLn "Hello, world!" >>
    putStrLn "What is your name, user?" >> 
    getLine >>= (\name ->
        putStrLn ("Nice to meet you, " ++ name ++ "!"))
更多例子 > Writer单子（JavaScript）

另一个常见的情况是保存日志文件或以其他方式报告程序的进度。有时，编程者想要记录更特殊的技术数据用于以后的性能分析或调试。Writer单子可以通过生成逐步积累的辅助输出来处理这些任务。
为了展示单子模式不局限于主要的函数式语言，这个例子用JavaScript实现了Writer单子。首先，数组（具有嵌套的尾部）允许构造Writer类型为链表。底层的输出值将位于这个数组的位置0，而位置1将隐蔽的持有连成一链的一些辅助注释：
const writer = [value, []];
定义unit是非常简单的：
const unit = value => [value, []];
定义输出具有调试注释的Writer对象的简单函数只需要unit：
const squared = x => [x * x, [`${x} was squared.`]];
const halved = x => [x / 2, [`${x} was halved.`]];
真正的单子仍需要bind，但是对于Writer，这简单的相当于将函数的输出附加至单子的链表：
const bind = (writer, transform) => {
    const [value, log] = writer;
    const [result, updates] = transform(value);
    return [result, log.concat(updates)];
};
样例函数现在可以使用bind链接起来，但是定义单子复合的一个版本（这里叫做pipelog）允许更加简洁的应用这些函数：
const pipelog = (writer, ...transforms) =>
    transforms.reduce(bind, writer);
最终结果是在逐步计算和为以后审查而记录之间的清晰的关注分离：
pipelog(unit(4), squared, halved);
// 结果的writer对象 = [8, ['4 was squared.', '16 was halved.']]
注解

↑  由于编程中常见在多个自由变量上的函数的事实，本文中描述的单子在技术上是范畴论学者所称谓的强单子（英语：）
↑  Semantically, M is not trivial and represents an endofunctor over the category of all well-typed values:  M:{\mathit {Val}}\to {\mathit {Val}}
↑  While a (parametrically polymorphic) function in programming terms, unit (often called η in category theory) is mathematically a natural transformation, which maps between functors:  \eta _{A}:\mathrm {id} ({\mathit {Val}}_{A})\to M({\mathit {Val}}_{A})
↑  bind, on the other hand, is not a natural transformation in category theory, but rather an extension  -^{*} that lifts a mapping (from values to computations) into a morphism between computations:  \forall f:{\mathit {Val}}_{A}\to M({\mathit {Val}}_{B}),f^{*}:M({\mathit {Val}}_{A})\to M({\mathit {Val}}_{B})
↑  Strictly speaking, bind may not be formally associative in all contexts because it corresponds to application within lambda calculus, not mathematics. In rigorous lambda-calculus, evaluating a bind may require first wrapping the right term (when binding two monadic values) or the bind itself (between two monadic functions) in an anonymous function to still accept input from the left.
引用

1 2 3 4 5 6 7  O'Sullivan, Bryan; Goerzen, John; Stewart, Don. . . Sebastopol, California: O'Reilly Media. 2009. chapter 14  [2021-02-04]. ISBN 978-0596514983. （原始内容存档于2021-01-14）.
1 2 3  Moggi, Eugenio.  (PDF). Information and Computation. 1991, 93 (1): 55–92  [2021-02-04]. doi:10.1016/0890-5401(91)90052-4. （原始内容存档 (PDF)于2011-03-22）.
1 2 3 4 5  Wadler, Philip. . 19th Annual ACM Symposium on Principles of Programming Languages. Albuquerque, New Mexico. January 1992.
1 2  Wadler, Philip. . ACM Conference on LISP and Functional Programming. Nice, France. June 1990.
1 2  Hudak, Paul; Peterson, John; Fasel, Joseph. . . 1999. chapter 9  [2021-02-04]. （原始内容存档于2021-01-26）.
↑  .   [2021-02-04]. （原始内容存档于2020-11-26）.
↑  Spivey, Mike.  (PDF). Science of Computer Programming. 1990, 14 (1): 25–42  [2021-02-04]. doi:10.1016/0167-6423(90)90056-J. （原始内容存档 (PDF)于2020-08-21）.
↑  . HaskellWiki. haskell.org.   [14 October 2018]. （原始内容存档于2015-01-03）.
↑  .   [9 October 2018]. （原始内容存档于2019-01-30）.
↑  . HaskellWiki.   [12 October 2018]. （原始内容存档于2020-11-08）.
↑  Iverson, Kenneth. . APL Quote Quad. September 1987, 18 (1): 5–40  [19 November 2018]. ISSN 1088-6826. doi:10.1145/36983.36984. （原始内容存档于2020-04-25）.
↑  Kleisli, Heinrich.  (PDF). Proceedings of the American Mathematical Society. 1965, 16 (3): 544–546  [19 November 2018]. doi:10.1090/S0002-9939-1965-0177024-4. （原始内容存档 (PDF)于2018-07-26）.
↑  Peter Pepper (编).  (技术报告) 5th corrected. Fachbereich Informatik, Technische Universität Berlin. November 1997.
↑  Moggi, Eugenio.  (PDF). Fourth Annual Symposium on Logic in computer science. Pacific Grove, California. June 1989  [2021-02-05]. （原始内容存档 (PDF)于2018-09-24）.
1 2  Peyton Jones, Simon L.; Wadler, Philip.  (PDF). 20th Annual ACM Symposium on Principles of Programming Languages. Charleston, South Carolina. January 1993  [2021-02-04]. （原始内容存档 (PDF)于2020-11-01）.
↑  . 7 October 2018  [2021-02-04]. （原始内容存档于2021-02-09）.
↑  De Meuter, Wolfgang.  (PDF). International Workshop on Aspect Oriented Programming at ECOOP. Jyväskylä, Finland. 1997  [2021-02-04]. （原始内容存档 (PDF)于2012-04-15）.
↑  . HaskellWiki. 1 November 2009  [24 October 2018]. （原始内容存档于2020-08-21）.
↑  . HaskellWiki. Haskell.org. 7 May 2018  [20 November 2018]. （原始内容存档于2018-10-30）.
1 2  Gibbard, Cale. . HaskellWiki. Haskell.org. 30 December 2011  [20 November 2018]. （原始内容存档于2017-12-14）.
1 2  Piponi, Dan. . A Neighborhood of Infinity. 7 August 2006  [2021-02-08]. （原始内容存档于2009-03-30）.
复数多值平方和立方方根函数可以复合（英语：）起来产生六次方根函数。支配输入和输出类型的结构和复合不同行动的结构，二者一起是list单子。弹丸符号•指示bind算子，z是复数，方括号指示数组（英语：），而:=含义是定义为:
(f•g)(z) := append(map(f,g(z)))

lift(f) = f° := unit•f = f•unit

sqrt°(z) == append(map(unit,sqrt(z)))= append(map(sqrt,unit(z)))

sxrt(z) = (cbrt°•sqrt°)(z) == append(map(cbrt°,sqrt°(z)))
波罗素庙

| 波罗素庙> 基本 |
| --- | --- |
国家: 中国
位置:  中国河北省张家口市张北县
宗教: 藏傳佛教
宗派: 格鲁派
波罗素庙，汉名寿康寺，位于河北省张家口市张北县二台镇波罗素村，是一座藏传佛教格鲁派寺院。