-ă˘ăăă¨ăŻä˝ă§ăăďź
-ĺŻä˝ç¨ăăç´ç˛ăŞč¨çŽăĺé˘ăăăăă
ďźHaskellč¨čŞăŤé˘ăăăŞăłăŠă¤ăłăăŁăšăŤăăˇă§ăłăăďź
ăˇăŁăźăăăŻăăźă ăşă¨ăŻăă˝ăłĺ壍ăŻć°çă§éŁăă§ăăžăă ćżé§ăŤăŞăăćšĺă夹ăăžăă ĺ°ăăŞăŽăŁăăăăăăžă-ăăăŚă彟ăăŻĺ°çä¸ăŽäşşéăčŚăžăă
-茪ćăŞăăç§ăăĄăăŠăăŤăăăćăăŚăăăăžăăďź
ă風čšăăăŤĺ
ĽăăŚă
ăăŽĺžă彟ăăŻăăăăăăăŤéăłăĺăłĺ˝źăăŻä˝ăčŚăăžăăă
ăăăăŻć°ĺŚč
ă§ăăăă¨ăăźă ăşăŻč¨ăăžăă
ăă§ăăŞăďźă
-彟ăŽçăăŻçľśĺŻžăŤćŁç˘şă§ăăă羜寞ăŤĺ˝šăŤçŤăĄăžăăă
ďźĺčŤďź
ĺ¤äťŁă¨ă¸ăăäşşă5ĺšăŽéăć°ăăă¨ć¸ăăăă¨ćăŁăă¨ăă彟ăăŻ5ĺšăŽéăŽçľľăćăăă 彟ăă70äşşăć°ăăă¨ć¸ăăăă¨ćăŁăă¨ăă彟ăăŻ70äşşăŽäşşçŠăćăăžăăă 彟ăă瞤ăă§300ĺšăŽçžăć°ăăă¨ć¸ăăă¨ăă彟ăăŻ...-ăžăăä¸čŹçăŤăăăŞăăŻç解ăăŚăăžăă ăăŽăăăĺ¤äťŁă¨ă¸ăăäşşăŻăćăçĽçă§ć zyăŞäşşă
ăăăăăăšăŚăŽč¨é˛ăŤĺ
ąéăăä˝ăăčŚăăžă§čŚăăżăć°ăăŚăă
éăŽćŚĺżľăć°ăăŚăăăăŽăŽ
ć§čłŞăăĺé˘ăăžăăă ăăăŚăĺĽăŽčł˘ăć zyăŞă¨ă¸ăăäşşăŻăäşşă
ăć°ĺăćĺŽăăăăăŤä˝żç¨ăăŚăăĺ¤ăăŽăšăăŁăăŻăăŻăăăŤĺ°ăŞăćĺć°ă§ç˝Žăćăăçăçľăżĺăăă§č¨ĺ¤§ăŞć°ăŽăšăăŁăăŻă罎ăćăăăă¨ăă§ăăžăăă
ăăăăŽčł˘ăć zyăŞă¨ă¸ăăäşşăăăăă¨ăŻăć˝čąĄĺă¨ĺźă°ăăžăă 彟ăăŻăä˝ăăŽéăŤé˘ăăăăšăŚăŽč¨é˛ăŤçšĺž´çăŞĺ
ąéçšăŤć°ăĽăăăăŽĺ
ąéçšăăŤăŚăłăăăăăŞăă¸ă§ăŻăăŽçšĺŽăŽăăăăăŁăăĺé˘ăăžăăă äťćĽăŽć°ĺă¨ĺźă°ăăăăŽć˝čąĄĺăŽćĺłă¨ăăăăäşşă
ăŽçć´ťăăŠăăťăŠćĽ˝ăŤăăŚăăăŽăăç解ăăŚăăă°ăHaskellč¨čŞăŽć˝čąĄĺăç解ăăăă¨ăŻéŁăăăăăžăăă ăŤăă´ăŞăŽć°ĺŚççčŤăăç§ăăĄăŤćĽăćăăăĺĺăŤăăăăăăăăăăăç解ăăăă¨ăŻăć°ĺăă¨ĺźă°ăăć˝čąĄĺăăéŁăăăăăžăăă ăăăăç解ăăăăăŤăăŤăă´ăŞăźăŽçčŤăăžăăŻéŤć ĄăŽăăŞăĽăźă ăŽć°ĺŚăăăçĽăĺż
čŚăŻăăăžăăďźçŽć°ă§ĺĺă§ăďźă ăžăăćăăăĺ¤ăăŽć°ĺŚçćŚĺżľăŤé źăăăŤăăăăă誏ćăăăă¨ăă§ăăžăă ăăăŚăHaskellăŽć˝čąĄĺăŽćĺłăŻć°ĺăŽćĺłă¨ăžăŁăăĺăă§ă-ăăă°ăŠăăźăŤă¨ăŁăŚçć´ťă漽ăŤăŞăăžăďźăăăŚăŠăă ăćłĺăăăă¨ăă§ăăžăăďźďźă
ćŠč˝ăăă°ăŠă ă¨ĺ˝äť¤ăăă°ăŠă ăŽéăç´ç˛ăŞćŠč˝ăŽĺŠçšăçşčŚăăč¨çŽă¨ăăăŽäťăăäťăŽä˝ăăăŽăŤăăťăŤĺăăĄăłăŻăżăźăŻç°Ąĺă§ăŻăăăžăăăăé常ăŤç°Ąĺă§ăďźéŠç¨ăăĄăłăŻăżăźăé常ăŤç°Ąĺă§ăďźăăŞăăŻçŹăăžăăăă˘ăăăç°Ąĺă§ăďźăăăŚăăăăŤăăă¤ăăŽă˘ăăăĺŽçžŠăăžăăăă˘ăăăéŠç¨ăă
ăŠă¤ăżăźă˘ăăăĺŽçžŠăăă˘ăă¤ăăçĽă
ă˘ăă¤ăă¨ăăĄăłăŻăżăźăéŠç¨ăăĄăłăŻăżăźăăăłă˘ăăăŽćłĺ
ĺăŻăŠăšďźĺ¤ć°ăŽćŠč˝ăçĄćă§ďź
I / OďźIOă˘ăă
ć˝čąĄĺăç解ďźăăăłĺăĺ
ĽăďźăăăŤăŻăé常ăäşşă
ăŻăăăăăăă¤ăăŽč§ĺşŚăăčŚăĺż
čŚăăăăžăă
ćĺăŤăććĄăăăć˝čąĄĺăŽĺ˝˘ĺźă§č¤éăăŽăŹăăŤăčż˝ĺ ăăăă¨ă§ă常ăŤééăăé常ăŤéŤăăŹăăŤăŽč¤éăăćé¤ă§ăăăă¨ăç解ăăĺż
čŚăăăăžăă ăăăăŁăŚăç´ç˛ăŞé˘ć°ă使ç¨ăăŚăăă°ăŠăăééăăăă¨ăŽăŞăč¨ĺ¤§ăŞć°ăŽĺéĄăŤă¤ăăŚčŞŹćăăžăďźĺżé
ăăăă¨ăŻăăăžăăă䝼ä¸ăŤčŞŹćăăžăďźă
珏äşăŤăććĄăăăć˝čąĄĺăăŠăŽăăăŤĺŽčŁ
ăăăăăăăăŚăăŽĺŽčŁ
ăăŠăŽăăăŤçšĺŽăŽăąăźăšă§ăŻăŞăé常ăŤĺ¤ć§ăŞç°ăŞăçśćłă§ăăă使ç¨ă§ăăăăç解ăăĺż
čŚăăăăžăă ăăăăŁăŚăHaskellăŽć˝čąĄĺăĺŽčŁ
ăăăă¸ăăŻă誏ćăăăăăăéŠç¨ĺŻč˝ăŞă ăă§ăŞăă俥ăăăăŞăăťăŠĺ¤ăăŽçśćłă§ĺ¤§ăăŞĺŠçšăćäžăăăă¨ă示ăăžăă
ăăăŚçŹŹä¸ăŤăäşşă
ăŻć˝čąĄĺăăŠăŽăăăŤĺŽčŁ
ăăăăă ăă§ăŞăăăăăăćĽĺ¸¸çć´ťăŤăŠăŽăăăŤéŠç¨ăăăăç解ăăĺż
čŚăăăăžăă ăăăăŁăŚăăăăŤă¤ăăŚăŻč¨äşă§čŞŹćăăžăă ăăăŤăăăăŻĺç´ă§ăŻăăăžăăăăé常ăŤĺç´ă§ă-ăăăăŽć˝čąĄĺăăŠăŽăăăŤĺŽčŁ
ăăăŚăăăăç解ăăăăăç°Ąĺă§ăďźăăăŚă誏ćăăăć˝čąĄĺăŽĺŽčŁ
ăç解ăăăă¨ăŻéŁăăăŞăăă¨ăăăăăžăďźă
ăă ăăĺ°ĺ
ĽăŻĺ¤ĺ°é
ăăăăăăăăăéĺ§ăăžăă č¨äşăŤăŻăłăźăăăťă¨ăăŠăŞăăŽă§ăăăŽć˝čąĄĺăŽçžăăă¨ăăŻăźăç解ăăŚčŠäžĄăăăăăŤHaskellăŽć§ćăŤç˛žéăăĺż
čŚăŻăăăžăăă
ĺ
貏äşé
ç§ăŻçľé¨čąĺŻăŞHaskellăăă°ăŠăăźă§ăŻăăăžăăă ç§ăŻăăŽč¨čŞăćŹĺ˝ăŤĺĽ˝ăă§ăçžćçšă§ăŻăžă ĺŚçżéç¨ăŤăăăžăďźçĽčăŽçżĺžă ăă§ăŞăăćčăŽĺć§çŻăĺż
čŚăŞăăăăăăŻćéăŽăăăťăšă§ăŻăăăžăăďźă ćčżăç§ăŻé˘ć°ĺăăă°ăŠăăłă°ă¨HaskellăŤă¤ăăŚăĺ˝äť¤ĺăăă°ăŠăăłă°č¨čŞăŽăżăŤç˛žéăăŚăăăăă°ăŠăăźă¨ä˝ĺşŚă芹ăăŞăăă°ăŞăăžăăă§ăăă ăăŽéç¨ă§ăHaskellč¨čŞăŽä¸ťčŚăŞć˝čąĄĺăŤă¤ăăŚăăăć確ă§ć§é ĺăăă誏ćăŤĺăçľăĺż
čŚăăăăă¨ăŤć°äťăăžăăă ăăŽčłćăŻăăăŽăăăŞć§é ĺăŽčŠŚăżăŤăăăžăăă čŞč
ăŽçăăăăç§ăŽăăŹăźăłăăźăˇă§ăłăŽä¸ćŁç˘şăŞĺŻč˝ć§ă¨ăăăŞăăŤĺĺăŤç解ăăăŚăăŞăăăăŤćăăçŹéăŽä¸Ąćšăç§ăŤććăăŚăăă ăăă°ĺš¸ăă§ăă
ćŠč˝ăăă°ăŠă ă¨ĺ˝äť¤ăăă°ăŠă ăŽéă
é˘ć°ĺč¨čŞă¨ĺ˝äť¤ĺč¨čŞă§ć¸ăăăăăă°ăŠă ă鳼ç°ĺłă§čŚăă¨ăéăăŻăăăžăăă ăăăăŽăăă°ăŠă ă¨äťăŽăăă°ăŠă ăŻăŠăĄăăăă˝ăźăšăăźăżăĺăĺ
Ľăăă˝ăźăšăăĺ¤ćăăăäťăŽăăźăżăĺşĺăăä¸ç¨ŽăŽăăŠăăŻăăăŻăšă§ăă ăăŠăăŻăăăŻăšĺ
ă§ăăźăżĺ¤ćăăŠăŽăăăŤčĄăăăăăćŁç˘şăŤç解ăăăăăŤăăăŠăăŻăăăŻăšĺ
ă確čŞăăĺ ´ĺăŤéăă確čŞăăžăă
ĺ˝äť¤ĺăăŠăăŻăăăŻăšă確čŞăăă¨ăăăăŤĺŤăžăăăăźăżăĺ¤ć°ăŤĺ˛ăĺ˝ăŚăăăĺż
čŚăŞăăźăżăĺĺžăăăžă§ăăăăŽĺ¤ć°ăçš°ăčżăĺ¤ć´ăăăăăŠăăŻăăăŻăšăăçşčĄăăăăă¨ăăăăăžăă
ćŠč˝çăŞăăŠăăŻăăăŻăšă§ăŻăç俥ăăźăżăŽçşäżĄăăźăżă¸ăŽăăŽĺ¤ćăŻăç俥ăăźăżă¸ăŽäžĺăŽčŚłçšăăćçľçľćă襨ăăăçšĺŽăŽĺźăéŠç¨ăăăă¨ăŤăăŁăŚčĄăăăžăă ĺŚć ĄăŽăŤăŞăăĽăŠă ăăă秝ĺăŽĺšłĺé庌ăä˝ăŤäžĺăăŚăăăčŚăăŚăăžăăďź ăăă§ăďźç§ťĺăăăăšă¨ç§ťĺăăćéăăă ĺćăăźăżďźăăš
Să¨ćé
t ďźăăăăłĺšłĺé庌ďź
S / t ďźăŽč¨çŽĺźăăăăă°ăćçľçľćďźĺšłĺé庌ďźăč¨çŽă§ăăžăă ćçľçľćăĺćăăźăżăŤäžĺăăă¨ăăĺăĺçăŤĺžăŁăŚăé˘ć°ăšăżă¤ăŤă§č¨čż°ăăăăăă°ăŠă ăŽćçľçľćăč¨çŽăăăžăă ĺćăŤăĺ˝äť¤ĺăăă°ăŠăăłă°ă¨ăŻç°ăŞăăč¨çŽăŽăăăťăšă§ăŻăĺ¤ć°ăŽĺ¤ć´ăŻăăăžăă-ăăźăŤăŤă§ăă°ăăźăăŤă§ăăăăžăăă
ĺŽéăĺăŽćŽľč˝ă§ăŻăĺčŞ
formulaăŽäťŁăăăŤĺčŞ
functionă使ç¨ăăćšăćŁăăă§ăăăă ĺ˝äť¤ĺăăă°ăŠăăłă°č¨čŞăŽ
é˘ć°ă¨ăăč¨čăŻăć°ĺŚăçŠçĺŚăăăăłé˘ć°ĺăăă°ăŠăăłă°č¨čŞă§ăăŽç¨čŞăćĺłăăăăŽă¨ăŻăžăŁăăĺźă°ăăŞăăă¨ăĺ¤ăăăăç§ăŻăăăăăžăăă§ăăă ĺ˝äť¤ĺč¨čŞă§ăŻăé˘ć°ăŻăă°ăă°ăăćŁç˘şăŤ
ăăăˇăźă¸ăŁă¨ĺźă°ăăăăŽăă¤ăžăăăăă°ăŠă ďźăľăăăă°ăŠă ďźăŽĺĺäťăé¨ĺă¨ĺźă°ăăçš°ăčżăçşçăăăłăźăăŽçš°ăčżăăĺéżăăăăăŤä˝żç¨ăăăžăă ĺ°ăĺžăŤăé˘ć°ĺăăă°ăŠăăłă°č¨čŞăŽé˘ć°ďźăăăă
pureé˘ć° ăăžăăŻ
pureé˘ć° ďźăĺ˝äť¤ĺăăă°ăŠăăłă°č¨čŞăŽé˘ć°ă¨ăŠăŽăăăŤç°ăŞăăăç解ă§ăăžăă
注ďźăăă°ăŠăăłă°č¨čŞăŽĺ˝äť¤ĺă¨ćŠč˝ĺă¸ăŽĺĺ˛ăŻăăăŞăarbitraryćçă§ăă ĺ˝äť¤ĺă¨ăżăŞăăăč¨čŞă§ăŻé˘ć°ĺăšăżă¤ăŤă§ăé˘ć°ĺă¨ăżăŞăăăč¨čŞă§ăŻĺ˝äť¤ĺăšăżă¤ăŤă§ăăă°ăŠăăłă°ă§ăăžăďź HaskellăŽĺ˝äť¤ĺăšăżă¤ăŤă§éäšăč¨çŽăăCăŽĺăăăă°ăŠă ă¨ćŻčźăăăăă°ăŠă ăŽäžă§ă ďź-ăăăŻĺăŤä¸äžżă§ăă ăăăăŁăŚăĺ˝äť¤ĺăăă°ăŠăăłă°ă弨ĺąăăĺ˝äť¤ĺč¨čŞă¨ăé˘ć°ĺăăă°ăŠăăłă°ă弨ĺąăăč¨čŞă¨ăăŚćŠč˝ĺč¨čŞăčăăŚăżăžăăăăç´ç˛ăŞćŠč˝ăŽĺŠçšăçşčŚăă
Haskellăăă°ăŠăăźăăăăă
ç´ç˛ăŞé˘ć°ăćąăćéăŽĺ¤§é¨ĺďźăăĄăăăăăšăŚăŻăăă°ăŠăăźăŤäžĺăăžăăăăăă§ăŻăŠăŽăăăŤăăšăăăŤă¤ăăŚčŠąăăŚăăžăďźă ĺŽéăăăăăŽé˘ć°ăŻăç´ç˛ăă¨ĺźă°ăăăăăĺ˝äť¤ĺăăă°ăŠăăłă°ă§ăé˘ć°ăă¨ăăç¨čŞăćĺłăăăăŽă¨ćˇˇĺăăăžăăă ĺŽéăăăăăŻç¨čŞăŽć°ĺŚçăŞç解ăŤăăăŚćăä¸čŹçăŞćŠč˝ă§ăă 䝼ä¸ăŤă3ă¤ăŽć°ĺăčż˝ĺ ăăăăŽăăăŞé˘ć°ăŽćăç°ĄĺăŞäžă示ăăžăă
addThreeNumbers xyz = x + y + z
Haskellć§ćăŤä¸ć
ŁăăŞäşşăŽăăăŽčŞŹć=č¨ĺˇăŽĺˇŚĺ´ăŽé˘ć°ăŽé¨ĺă§ăŻăé˘ć°ăŽĺĺă常ăŤćĺăŤćĽăŚă揥ăŤăšăăźăšă§ĺşĺăăăŚăăăŽé˘ć°ăŽĺźć°ăčĄăăžăă ăăŽĺ ´ĺăé˘ć°ĺăŻaddThreeNumbersă§ăăă x ă yăăăăłzăŻăăŽĺźć°ă§ăă
=č¨ĺˇăŽĺłĺ´ăŤăŻăĺźć°ăŽčŚłçšăăăé˘ć°ăŽçľćăăŠăŽăăăŤč¨çŽăăăăă示ăăăŚăăžăă
=č¨ĺˇďź
çĺˇ ďźăŤćł¨ćăăŚăă ăăă ĺ˝äť¤ĺăăă°ăŠăăłă°ă¨ăŻç°ăŞăăĺ˛ăĺ˝ăŚćä˝ăćĺłăăăăŽă§ăŻăăăžăăă
çĺˇăŻă彟ăŽĺˇŚăŤăăăăŽă彟ăŽĺłăŤ
ăă襨çž
ă¨ĺăă§ăăăă¨ăćĺłăăžăă ć°ĺŚăŽăăăŤďź
6 + 4ăŻ
10 ă¨ĺăăŞăŽă§ă
6 + 4 = 10ă¨ć¸ăăžăă ăŠăŽč¨çŽă§ăă10ăŽäťŁăăăŤĺź
ďź6 + 4ďźă罎ăćăăăă¨ăă§ăă10ă罎ăćăăĺ ´ĺă¨ĺăçľćăĺžăăăžăă HaskellăŽĺăăă¨ďź
addThreeNumbers xyz
䝣ăăăŤăĺź
x + y + z
罎ăćăăăă¨ăă§ăăĺăçľćăĺžăăăžăă ă¨ăăă§ăăłăłăă¤ăŠăŻăžăăŤăăăčĄăăžă-é˘ć°ĺăŤééăăă¨ă䝣ăăăŤăăŽćŹä˝ă§ĺŽçžŠăăăĺźă罎ăćăăžăă
ăăŽćŠč˝ăŽăç´ĺşŚăă¨ăŻä˝ă§ăăďź
é˘ć°ăŽçľćăŻăĺźć°ăŽăżăŤäžĺăăžăă ĺăĺźć°ă§ăăŽé˘ć°ăä˝ĺşŚĺźăłĺşăăŚăăé˘ć°ăŻĺ¤é¨çść
ăĺç
§ăăŞăăăă常ăŤĺăçľćăčżăăžăă 彟弳ăŻĺ¤ăŽä¸çăăĺŽĺ
¨ăŤéé˘ăăăŚăăăč¨çŽă§ăŻăç§ăăĄă彟弳ăŽč°čŤă¨ăăŚć示çăŤäźăăăăŽă ăăčć
ŽăăŚăăžăă ć´ĺ˛ăŞăŠăŽç§ĺŚă¨ăŻç°ăŞăăć°ĺŚçč¨çŽăŽçľćăŻăĺ
ąçŁĺ
ă樊ĺăćĄăŁăŚăăăăć°ä¸ťĺ
ĺĄăăăăźăăłĺ¤§çľąé ăăŤăăŁăŚĺˇŚĺłăăăžăăă ç§ăăĄăŽé˘ć°ăŻć°ĺŚăŤçąćĽăăžă-ăăăŻć¸Ąăăăĺźć°ăŤăŽăżäžĺăăăă䝼ä¸ăŤăŻäžĺăăžăăă
čŞĺă§ç˘şčŞă§ăăžăăăăŽé˘ć°ăŽĺźć°ă¨ăăŚĺ¤1ă2ă4ăä˝ĺ渥ăăŚăă常ăŤ7ăŤăŞăăžăăă3ăăŽäťŁăăăŤăďź2 + 1ďźăă渥ăăă¨ăă§ăăžăă ă4ă-ăďź2 * 2ďźăă ăăăăŽĺźć°ă§ĺĽăŽçľćăĺĺžăăăŞăăˇă§ăłăŻăăăžăăă
addThreeNumbers
é˘ć°ăŻăĺ¤é¨çść
ăŤäžĺăăŞăă ăă§ăŞăăĺ¤ć´ăă§ăăŞăăăăç´ç˛ă¨addThreeNumbers
ĺźă°ăăžăă 彟弳ăŻĺźć°ă¨ăăŚć¸ĄăăăăăźăŤăŤĺ¤ć°ăĺ¤ć´ăăăă¨ăăă§ăăžăăă 彟弳ăă§ăăďźăăăŚăăšăďźăă¨ăŻă彟弳ăŤć¸Ąăăăĺźć°ăŽĺ¤ăŤĺşăĽăăŚçľćăč¨çŽăăăă¨ă§ăă ă¤ăžăăăăŽćŠč˝ăŤăŻĺŻä˝ç¨ăŻăăăžăăă
ăăăŤăăä˝ăĺžăăăžăăďź ăŞăHaskellistsăŻăăăźăŤăŤăăăłă°ăăźăăŤĺ¤ć°ăŽĺ¤ç°ăŤĺşăĽăăŚć§çŻăăăĺ˝äť¤ĺăăă°ăŠăăłă°č¨čŞăŽäźçľąçăŞćŠč˝ăčŚăŚăăăŽăăăŞčť˝purçăŞćšćłă§ăăŽćŠč˝ăŽăç´ĺşŚăăäżćăăăŽă§ăăăăă
ç´ç˛ăŞé˘ć°ăŽč¨çŽçľćăŻĺ¤é¨çść
ăŤăžăŁăăäžĺăăăĺ¤é¨çść
ăĺ¤ć´ăăŞăăăăĺ
ąéăŽăŞă˝ăźăšăăăăŁăŚçŤśĺăăăăźăżăŽçŤśĺăĺżé
ăăăă¨ăŞăăăăăăŽé˘ć°ă丌ĺăŤč¨çŽă§ăăžăă ĺŻä˝ç¨ăŻä¸Śĺč¨çŽăŽćťă§ăăăç§ăăĄăŽç´ç˛ăŞé˘ć°ăŤăŻăăăăăŞăăăăĺżé
ăăĺż
čŚăŻăăăžăăă é˘ć°ăč¨çŽăăé ĺşăăč¨çŽă丌ĺĺăăćšćłăć°ăŤăăăŤăç´ç˛ăŞé˘ć°ăč¨čż°ăăă ăă§ăă Haskellă§č¨čż°ăăŚăăăăăăăăăăŤä¸Śĺĺă§ăăžăă
ăăăŤăç´ç˛ăŞé˘ć°ăĺăĺźć°ă§č¤ć°ĺĺźăłĺşăăăă常ăŤĺăçľćăĺžăăăăă¨ăäżč¨źăăăŚăăăăăHaskellăŻä¸ĺşŚč¨çŽăăăçľćăč¨ćśăăĺăĺźć°ă§é˘ć°ăĺ庌ĺźăłĺşăăăă¨ăĺ庌čŠäžĄăăăŤäťĽĺăŤč¨çŽăăăçľćă罎ăćăăžăă ăăăŻăĄă˘ĺă¨ĺźă°ăăžăă ăăăŻé常ăŤĺźˇĺăŞćéŠĺăăźăŤă§ăă çľćă常ăŤĺăă§ăăăă¨ăăăăŁăŚăăăŽăŤăăŞăĺăłăŤăŚăłăăăăŽă§ăăăăďź
ĺ˝äť¤ĺăăă°ăŠăăłă°ăŽćŹčłŞăĺłĺŻăŤĺŽçžŠăăăăˇăźăąăłăšĺ
ăŽĺ¤ć°ăŽçŞçśĺ¤ç°ďźĺ¤ć´ďźăŤăăĺ ´ĺăé˘ć°ĺăăă°ăŠăăłă°ăŽćŹčłŞăŻăăźăżăŽä¸ĺ¤ć§ă¨é˘ć°ăŽć§ćăŤăăăžăă
é˘ć°
g :: a -> b
ďźăĺaăŽĺźć°ăĺăăĺbăŽĺ¤ăčżăé˘ć°găă¨čŞăďźă¨é˘ć°
f :: b -> c
ăăăĺ ´ĺăăăăăĺćăăăă¨ă§é˘ć°
h :: a -> c
ĺĺžă§ăăžă
h :: a -> c
ă ăżă¤ăaăŽĺ¤ăé˘ć°găŽĺ
ĽĺăŤäžçľŚăăăă¨ăŤăăăĺşĺă§ăżă¤ăbăŽĺ¤ăĺĺžăăžă-é˘ć°făŻăžăăŤăăŽăżă¤ăăŽĺ
Ľĺăĺăĺăăžăă ăăăăŁăŚăé˘ć°găŽč¨çŽçľćăé˘ć°făŤăăăŤčť˘éă§ăăžăăăăŽçľćăŻăăżă¤ăcăŽĺ¤ăŤăŞăăžăă 揥ăŽăăăŤć¸ăăăŚăăžăă
h :: a -> c h = f . g

é˘ć°fă¨găŽéăŽăă¤ăłăăŻă揥ăŽăżă¤ăăŽĺććźçŽĺă§ăă
(.) :: (b -> c) -> (a -> b) -> (a -> c)
ĺććźçŽĺăŻăé常ăŽé˘ć°ă¨ĺăćšćłďźćŹĺź§ĺ
ďźă§ćŹĺź§ĺ
ă§ä˝żç¨ăăăăăăăăă§ăŻćŹĺź§ă§ĺ˛ăžăăŚăăžăă 2ă¤ăŽĺźć°ăŽéă§ä¸ç˝Žăšăżă¤ăŤă§ä˝żç¨ăăĺ ´ĺăćŹĺź§ăŞăă§ä˝żç¨ăăăžăă
ĺććźçŽĺăŻăé˘ć°făŤĺŻžĺżăăćĺăŽĺźć°ă¨ăăŚé˘ć°
b -> c
ăĺăăžăďźç˘ĺ°ăŻĺ-é˘ć°ăŽĺă示ăăžăďźă 2çŞçŽăŽĺźć°ă彟ăŻé˘ć°ăĺăĺăăžă-ăă ăăăżă¤ă
a -> b
ăăăăŻé˘ć°găŤĺŻžĺżăăžăă ăăăŚăć§ććźçŽĺăŻăé˘ć°
h :: a -> c
a -> c
ăŤĺŻžĺżăăa-
a -> c
ĺăŽć°ăăé˘ć°ăusăŤčżăăžăă ćŠč˝ç˘ĺ°ăŤăŻĺłçľĺć§ăăăăăăćĺžăŽćŹĺź§ăççĽă§ăăžăă
(.) :: (b -> c) -> (a -> b) -> a -> c
ăăă§ăć§ććźçŽĺăŻă
b -> c
ăăăł
b -> c
a -> b
ĺăŽ2ă¤ăŽé˘ć°ă¨ă2çŞçŽăŽé˘ć°ăŽĺ
ĽĺăŤčť˘éăăăaĺăŽĺźć°ă渥ăĺż
čŚăăăăă¨ăăăăăžăăĺşĺă§ăŻă
c
ĺăŽĺ¤ăĺĺžăăžăăćŠč˝ă
ć§ććźçŽĺăăăăă§ç¤şăăăççąć°ĺŚă§ăŻă f â g
ă¨ăă襨č¨ăŻăé˘ć°ăŽć§ćă示ăăăăŤä˝żç¨ăăăžăăăăăŻăăf after găăćĺłăăžăă ăă¤ăłăăŻăăŽăˇăłăăŤăŤäźźăŚăăăăăć§ććźçŽĺă¨ăăŚé¸ćăăăžăăă
ćŠč˝ăŽć§ć
f . g
f . g
ăŻ
f (gx)
ă¨ĺăćĺł-ă¤ăžă é˘ć°
g
ăĺźć°
x
éŠç¨ăăçľćăŤéŠç¨ăăăé˘ć°
f
ăĄăăŁă¨ĺž
ăŁăŚďź ăăăŚăé˘ć°h = făŽĺŽçžŠă§ĺ¤ąăăăăżă¤ăaăŽĺźć°ăŻăŠăăŤăăăžăăăă gďź ĺććźçŽĺă¸ăŽĺźć°ă¨ăăŚ2ă¤ăŽé˘ć°ă襨示ăăăžăăăgé˘ć°ă¸ăŽĺ
ĽĺăŤć¸Ąăăăĺ¤ăŻčĄ¨ç¤şăăăžăăďźĺăĺźć°ăé˘ć°ĺŽçžŠăŽă=ăč¨ĺˇăŽĺˇŚă¨ĺłăŽćĺžăŽĺ ´ćăŤăăăăăŽĺźć°ăäťăŽăŠăă§ă使ç¨ăăăŚăăŞăĺ ´ĺăççĽă§ăăžăďźăă ăă常ăŤä¸Ąĺ´ăăďźă ć°ĺŚă§ăŻăĺźć°ăŻăé˘ć°ăŽéŠç¨ăă¤ăłăăă¨ĺźă°ăăăăăăăŽč¨čż°ăšăżă¤ăŤăŻăçĄćĺłăă¨ĺźă°ăăžăďźé常ăĺććźçŽĺăŽăăăŞăă¤ăłăăŽč¨é˛ă§ăŻăĺ¤ć°ăăăžă:)ďźă
é˘ć°ăŽĺćăé˘ć°ĺăăă°ăŠăăłă°č¨čŞăŽćŹčłŞă§ăăăŽăŻăŞăă§ăăďź ăŻăăé˘ć°ĺč¨čŞă§ć¸ăăăăăă°ăŠă ăŻé˘ć°ăŽĺćăŤéăăŞăăăă§ăďź é˘ć°ăŻăăăă°ăŠă ăŽć§ćčŚç´ ă§ăă ăăăăć§ćăăă¨ăäťăŽé˘ć°ăĺĺžăăçŹčŞăŽćšćłă§ăć°ăăé˘ć°ăĺĺžăăăăăŤć§ćăăžă-ăŞăŠă ăăźăżăŻăăé˘ć°ăăĺĽăŽé˘ć°ăŤćľăăĺ¤ćăăé˘ć°ăć§ćăăăăăŽĺŻä¸ăŽćĄäťśăŻăăăé˘ć°ăŤăăŁăŚčżăăăăăźăżă揥ăŽé˘ć°ăĺăăăŽă¨ĺăĺăćă¤ăă¨ă§ăă
HaskellăŽé˘ć°ăŻăŻăŞăźăłă§ăăăć示çăŤć¸Ąăăăĺźć°ăŤăŽăżäžĺăăŚăăăăăé˘ć°ć§ćăă§ăźăłăăăă税ăŽăăăŞăăŻăăç°ĄĺăŤăĺźăĺşăăăŚăăŞăăĄăŻăżăŞăłă°ăžăăŻĺŽĺ
¨ăŤç˝Žăćăăăă¨ăăă§ăăžăă 注ćăăĺż
čŚăăăăŽăŻăć°ăăăăŞăăŻé˘ć°ăĺ¤ăăăŞăăŻé˘ć°ă¨ĺăĺăŽĺ
Ľĺĺ¤ă¨ĺşĺĺ¤ă§ĺăĺ
Ľăăăă¨ă ăă§ăă ăăă ăă§ăďź ç´ç˛ăŞé˘ć°ăŻĺ¤é¨çść
ăŤäžĺăăŞăăăăé˘ć°ăŤé˘äżăŞăé˘ć°ăăăšăă§ăăžăă ăăă°ăŠă ĺ
¨ä˝ăăăšăăă䝣ăăăŤăĺă
ăŽćŠč˝ăăăšăăăžăă ç§ăăĄăŽĺ ´ĺăăăŽé常ăŤéčŚăŞčŠąă§čŞŹćăăăŚăăçśćłăŻăĺăŤä¸ĺŻč˝ăŤăŞăăžăă
ăăźăąăăŁăłă°ć
ĺ˝č
ăŻăăă°ăŠăăźăŤćŹĄăŽăă¨ăĺ°ăăžăă
-大čŚć¨Ąăăă¸ă§ăŻăăăľăăźăăăéŁăăăŻä˝ă§ăăďź
ăăžăăăăŞăăä˝ĺŽśă§ăăăćŚäşă¨ĺšłĺăăă¸ă§ăŻăăăľăăźăăăŚăăă¨ćłĺăăŚăă ăăăă¨ăăă°ăŠăăźăŻçăăžăă -ăăŞăăŻTKăćăŁăŚăăžă-ăăżăźăˇăŁăťăăšăăŻăé¨ăŽä¸ă§ĺ
ŹĺăćŠăăćšćłăŤă¤ăăŚăŽçŤ ăć¸ăăžăă ăé¨ăéăŁăŚăăăă¨ć¸ăăŚäżĺăăă¨ăăăăżăźăˇăŁăťăăšăă´ăĄă亥ăăŞăăžăăăçśčĄă§ăăžăăăă¨ăăă¨ăŠăźăĄăăťăźă¸ă襨示ăăăžăă ăŠăăăŚćťăă ăŽďźăŠăăăŚćťăă ăŽďź ăăŞăăŻç解ăĺ§ăăžăă ăă¨ăźăŤăťăăşăăăŽă¤ăă¤ăăăé´ă彟ăč˝ăĄăéăĺ°é˘ăŤăśă¤ăăăăăšăăăăŽĺźžä¸¸ăăăżăźăˇăŁăŤčˇłăčżăŁăăă¨ăăăăăžăăă ăŠăăă éăă˘ă¤ăăŤçść
ăŤĺ
éťăăžăăďź é´ă交ćăăžăăďź ćąăĺăĺ¤ăăă¨ăŤăăžăăă ĺé¤ăăŚäżĺăăăRzhevskyä¸euăćťäşĄăăžăăăăă¨ăăăĄăăťăźă¸ăĺăĺăăžăă ăăä¸ĺşŚăăăŞăăŻĺş§ăŁăŚç解ăă揥ăŽçŤ ă§ĺ˝źăŻăăŻăăăźăŤăŤĺžăăŚăăăă¨ăăăăăžă...
Haskellistsăç´ç˛ăŞćŠč˝ăăăăťăŠéčŚăăŚăăççąăç解ăăŚăă ăăă 珏ä¸ăŤăăăźăżçŤśĺăĺżé
ăăăă¨ăŞăăĺŞĺăŞăă§ä¸Śĺĺăăăăłăźăăć¸ăăă¨ăă§ăăžăă 揥ăŤăăłăłăă¤ăŠăźăč¨çŽăĺšççăŤćéŠĺă§ăăăăăŤăăžăă ăăăŚçŹŹä¸ăŤăĺŻä˝ç¨ăăŞăăç´ç˛ăŞé˘ć°ăĺ¤é¨çść
ăăçŹçŤăăŚăăăăăăăă°ăŠăăŻé常ăŤĺ¤§ăăŞăăă¸ă§ăŻăă§ăç°ĄĺăŤăľăăźăăăăšăăăŞăăĄăŻăżăŞăłă°ă§ăăžăă
č¨ăćăăă°ăHaskellč¨čŞăŽä˝ćč
ăŻăä¸çăŽĺ¤é¨çść
ăăĺŽĺ
¨ăŤéé˘ăăăä¸çăă¤ăžăăăšăŚăŽćŠč˝ăăăăă§ăçść
ăăŞăăăăšăŚăä¸ĺŻč˝ăŤćéŠĺăăăŚăăăăăšăŚăĺŞĺăŞăă§ä¸Śĺĺăăăä¸çăŽĺ¤é¨çść
ăăĺŽĺ
¨ăŤéé˘ăăăä¸çăćăäťăăžăăĺ´ă č¨čŞă§ăŻăŞăăĺ¤˘ďź Eugenio Moggi
ăă˘ăăăŽćŚĺżľăŤé˘ăăç§ĺŚçç 犜ă§ăŞăšăăăăäşç´°ăŞäşăăăŠăăăăăç解ăăăă¨ă ăăćŽăŁăŚăăžăă
ç犺ăŽăăŽé常ăŤç形ăŽéŚŹă§ăç§ăăĄăéé˘ăăăŚăăĺ¤ăŽä¸çăăă ăćĽăăăă°ăŠă ăŽĺćăăźăżăĺĺžăăăŤăŻăŠăăăă°ăăăŽă§ăăăăďź ăăĄăăăăŚăźăśăźĺ
ĽĺăŽçľćăç´ç˛ăŞé˘ć°ďźăă¨ăă°ăăăźăăźăăăăŽćĺĺ
ĽĺăĺăäťăăgetChar
é˘ć°ďźăŽĺźć°ă¨ăăŚä˝żç¨ă§ăăžăăăăžăăăăŽćšćłă§ăĺą
ĺżĺ°ăŽčŻăăŻăŞăźăłăŞä¸çăŤĺż
čŚăŞăăăźăăŁăé˘ć°ăä˝ćăăžăăăăăŻăăă§ä¸ćăă揥ăŤăăăŽăăăŞé˘ć°ăŻĺ¸¸ăŤĺăĺźć°ďź getChar
é˘ć°ďźăćăĄăžăăăăŚăźăśăźďźăăă§ăŻĺž
ăĄäźăďźďźă常ăŤç°ăŞăăăźăćźăăăăč¨çŽĺ¤ăŻĺ¸¸ăŤç°ăŞăăžăă
ăăă°ăŠă ăŽçľćă§ăăăĺą
ĺżĺ°ăŽčŻăăç´ç˛ăŤćŠč˝çăŞä¸çăăéé˘ăăăăĺ¤ăŽä¸çăŤçľćăä¸ăăćšćłăŻďź çľĺąăć°ĺŚçăŞćĺłă§ăŽé˘ć°ăŻĺ¸¸ăŤçľćăčżăĺż
čŚăăăăä¸é¨ăŽăăźăżăĺ¤é¨ăŤé俥ăăé˘ć°ăŻä˝ăčżăăŞăăăăé˘ć°ă§ăŻăăăžăăďź
ăăăăé¨ĺçăŤĺŽçžŠăăăé˘ć°ăă¤ăžăăăăšăŚăŽĺźć°ăŤĺŻžăăŚĺŽçžŠăăăŚăăŞăé˘ć°ăăŠăăăžăăďź ăă¨ăă°ăăăçĽăăăŚăăé¤çŽé˘ć°ăŻăźăăŤăăé¤çŽăŤĺŻžăăŚĺŽçžŠăăăŚăăžăăă ăăŽăăăŞé˘ć°ăŻăç¨čŞăŽć°ĺŚçăŞćĺłă§ăŽćŹć źçăŞé˘ć°ă§ăăăăžăăă ăăĄăăăăăŽăăăŞĺźć°ăŤĺŻžăăŚäžĺ¤ăăšăăźă§ăăžăăă...
...ăăăăäžĺ¤ăŻăŠăăăžăăďź äžĺ¤ăŻăç´ç˛ăŞé˘ć°ăăćĺž
ăăăçľćă§ăŻăăăžăăďź
éćąşĺŽçăłăłăăĽăźăăŁăłă°ăăŠăăăăďź ă¤ăžăăćŁăăč¨çŽçľćă1ă¤ă§ăŻăŞăăĺ¤ăăŽĺ ´ĺă§ăă ăă¨ăă°ăĺčŞăŽçżťč¨łăĺĺžăăăĺ ´ĺăăăă°ăŠă ăŻăăŽćĺłăŽăăă¤ăăä¸ĺşŚăŤç¤şăăăăăăăćŁăăçľćăŤăŞăăžăă ç´ç˛ăŞé˘ć°ăŻĺ¸¸ăŤ1ă¤ăŽçľćăŽăżăčżăĺż
čŚăăăăžăă
ăăăŚăçśçˇ¨ăăŠăăăăďź çśçśă¨ăŻăăăă¤ăăŽč¨çŽăĺŽčĄăăĺžăăăăăĺŽäşăăăŽăĺž
ăăăŤçžĺ¨ăŽçść
ăäżĺăăäťăŽăżăšăŻăŤĺăćżăăăă¨ă§ăăăăŽăăăĺŽäşĺžăŤä¸ĺŽĺ
¨ăŞč¨çŽăŤćťăăä¸ćăăă¨ăăăăçśčĄăăžăă çść
ăăŞăăăăăăŞăç´ç˛ăŤćŠč˝çăŞä¸çă§ăŻăăŠăŽăăăŞçść
ăŤă¤ăăŚčŠąăăŚăăăŽă§ăăăăďź
ăăăŚăćĺžăŤăăŠăăăăăăĺ¤é¨çść
ăčć
Žăăă ăă§ăŞăăä˝ăăăŽćšćłă§ăăăĺ¤ć´ăăĺż
čŚăăăĺ ´ĺăä˝ăăăšăă§ăăăăďź
č¨çŽăăŻăŞăźăłăŤäżăĄă襨ćăăăĺéĄă解湺ăăćšćłăä¸çˇăŤčăăžăăăă ăăăŚăăăăăăšăŚăŽĺéĄăŤĺŻžăăŚĺ
ąéăŽč§ŁćąşçăčŚă¤ăăăăŠăăăčŚăŚăżăžăăăă
č¨çŽă¨ăăăŽäťă
ăăŽăăăç´ç˛ăŞćŠč˝ăŤç˛žéăăăăŽç´ç˛ăăăăă°ăŠăăç´é˘ăăćăč¤éăŞĺéĄăĺăé¤ăăă¨ăă§ăăăă¨ăŤć°äťăăžăăă ăăăăç´ç˛ăŞćŠč˝ăć´ťç¨ăăč˝ĺăçśćăăăăăŤč§ŁćąşăăŞăăă°ăŞăăŞăĺ¤ăăŽĺéĄăŤă¤ăăŚă誏ćăăžăăă ç§ăŻăăăăĺăłä¸ăăžăďźI / OăŤé˘éŁăăĺéĄăĺăé¤ăăžăăăăăăŤă¤ăăŚăŻĺžă§čŞŹćăăžăďźăăăăăŽä¸čŹçăŞăăżăźăłăčŚăăă¨ăă§ăăăăăŤăăăăăăăăĺ硨ćăăžăďź
ăăšăŚăŽĺźć°ăŤĺŻžăăŚĺŽçžŠăăăŚăăŞăé˘ć°ăăăĺ ´ĺăăăăžăă é˘ć°ăĺŽçžŠăăăŚăăăăŽé˘ć°ăŤĺźć°ă渥ăă¨ăăçľćăč¨çŽăăĺż
čŚăăăăžăă ăăăăĺŽçžŠăăăŚăăŞăĺźć°ă渥ăĺ ´ĺăé˘ć°ăä˝ăäťăŽă㎠ďźäžĺ¤ăă¨ăŠăźăĄăăťăźă¸ăăžăăŻĺ˝äť¤ĺnull
éĄäźźçŠďźăčżăăăăŤăăžă ă
é˘ć°ăçľćă1ă¤ă§ăŻăŞăăäťăŽä˝ă ďźăă¨ăă°ăçľćăŽăŞăšăĺ
¨ä˝ăăžăăŻăžăŁăăçľćăŞăďźçľćăŽçŠşăŽăŞăšăďźďźăä¸ăăăă¨ăăăăžăă
é˘ć°ăŽĺ¤ăč¨çŽăăăăăŤăĺźć°ă ăă§ăŞăă ä˝ăäťăŽă㎠ďźăă¨ăă°ăĺ¤é¨ç°ĺ˘ăăăŽăăźăżăć§ćăăĄă¤ăŤăăăŽč¨ĺŽăŞăŠďźăĺĺžăăăĺ ´ĺăăăăžăă
揥ăŽé˘ć°ă渥ăăăăŤč¨çŽăŽçľćăĺĺžăăă ăă§ăŞăă ăăăäťăŽä˝ăăŤĺźć°ă¨ăăŚéŠç¨ăăăĺ ´ĺăăăăžăďźä˝ăăăŽçść
ăĺĺžăăĺžăćťăŁăŚč¨çŽăçśčĄăăăă¨ăă§ăăžăăăăăŻçśçśăŽćĺłă§ăďźă
č¨çŽăĺŽčĄăăă ăă§ăŞăă ä˝ăäťăŽăă¨ăĺŽčĄăăăĺ ´ĺăăăăžă ďźăă¨ăă°ăăă°ăŤä˝ăăć¸ăčžźăďźă
é˘ć°ăä˝ćăăă¨ăăŤăč¨çŽăŽçľćă ăă§ăŞăă äťăŽä˝ă ďźăă¨ăă°ăćĺăŤăŠăăăăčŞăżĺăă揥ăŤä˝ăăăŽćšćłă§ĺśĺžĄăăăćšćłă§ĺ¤ć´ăăăŞăŠďźă揥ăŽé˘ć°ăŤć¸Ąăăăĺ ´ĺăăăăžă ă
ä¸čŹçăŞăăżăźăłăŤć°ăĽăăžăăăďź ćŹäźźăłăźăă§ăŻă揥ăŽăăăŤč¨čż°ă§ăăžăă
( / - ) {
ăăĄăăăăăŽăäťăŽä˝ăăăé˘ć°ăŽčż˝ĺ ĺźć°ă¨ăăŚć¸Ąăăă¨ăă§ăăžăďźăăŽă˘ăăăźăăŻĺ˝äť¤ĺăăă°ăŠăăłă°ă§ä˝żç¨ăăăăăšăŹăăçść
ăă¨ĺźă°ăăžăďźăăç´ç˛ăŞč¨çŽă¨ăäťăŽä˝ăăä¸ĺşŚăŤçŠăżéăăăă¨ăŻćčŻăŽă˘ă¤ăă˘ă§ăŻăăăžăăă ăžăăăăăŤăăă誏ćăăăăšăŚăŽçśćłăŤĺŻžăăŚĺä¸ăŽă˝ăŞăĽăźăˇă§ăłăĺĺžăăăă¨ăŻă§ăăžăăă
ĺăăŤč°čŤăăăć°ĺăçşćăăĺ¤äťŁă¨ă¸ăăäşşăćăĺşăăžăăăă ĺ¤ăăŽçžăŽĺłăćă䝣ăăăŤă彟ă
ăŻč¨çŽăăăŽćčăăĺé˘ăăžăă ă çžäťŁçăŤăŻăăłăłăăĽăźăăŁăłă°ă¨ăăŽăłăłăăăšăăăŤăăťăŤĺăăžăăă ăăăŚăăăăăŽĺăŤéăč¨çŽăăćŚĺżľăç§ăăĄăčăăŚăăăă¨ă¨ĺŻćĽăŤé˘éŁăăŚăăĺ ´ĺă彟ăăŽéŠć°ăŻăăă2ă¤ăŽä¸ŚčĄăăăĺŽčĄăăăźăăŤĺĺ˛ăăžăă-č¨çŽăŤç´ćĽćĽçśăăăăšăăŞăźă ă¨
ăă㯠-ă¤ăžăăč¨çŽăŽăłăłăăăšăă§ăďźč¨çŽä¸ăŤăłăłăăăšăăäżĺă§ăăă ăă§ăŞăăăă¨ăă°çž¤ăăŽçžăăä˝ĺšăŽăąăăăĺžăăăăăč¨çŽăăă¨ăăłăłăăăšăăĺ¤ć´ăăăăăă§ăďźă

Haskellă§ăäťăŽä˝ăăă襨çžăăĺćăŤćăä¸čŹĺăăăă˝ăŞăĽăźăˇă§ăłăĺĺžăăăĺ ´ĺăăăŽăäťăŽä˝ăăăčż˝ĺ ăŽăżă¤ăă¨ăăŚčĄ¨çžăăžăă ăă ăăĺç´ĺă§ăŻăŞăăäťăŽĺăĺźć°ă¨ăăŚĺăé˘ć°ĺă§ăă č¤éă§ĺăăăŤăăă§ăăă ĺżé
ăăŞăă§ăă ăăăăăăŻé常ăŤç°Ąĺă§ăć°ĺĺžăŤăăŞăčŞčşŤă§čŚăă§ăăăă
ăäťăŽä˝ăăăŽăŤăăťăŤĺ
1998ĺš´12ć11ćĽăçŤćăç 犜ăăăăăŤçŤćć°ĺăŞăźăăżăźĺŽĺŽčšăćăĄä¸ăăăăžăăă ăăă¤ăšăçŤćăŤĺ°éăăĺžăăăăŻĺ¤ąăăăžăăă 調ćťĺžăĺśĺžĄăăă°ăŠă ă§ăŻăä¸é¨ăŽčˇé˘ăă¤ăłăĺä˝ă§čć
ŽăăăäťăŽčˇé˘ăŻăĄăźăăŤĺä˝ă§čć
Žăăăăă¨ăĺ¤ćăăžăăă ăŠăĄăăŽĺ ´ĺăăăăăăŽĺ¤ăŻ
Double
ĺă§čĄ¨ăăăŚăăžăăă é˘ć°ăă¤ăłăĺä˝ă§ăŤăŚăłăăăçľćăăĄăźăăŤĺä˝ă§čĄ¨ăăăĺźć°ă渥ăăăăăăĺ˝çśăč¨çŽă§ă¨ăŠăźăçşçăăžăăă
ăăŽăăăŞă¨ăŠăźăĺéżăăăĺ ´ĺăŻăăĄăźăăŤă§čĄ¨ăăăĺ¤ăă¤ăłăă§čĄ¨ââăăăĺ¤ă¨ç°ăŞăĺż
čŚăăăăžăăăăăăŁăŚăééăŁăĺä˝ă§čĄ¨ăăăĺ¤ăé˘ć°ăŤć¸Ąăăă¨ăăă¨ăăłăłăă¤ăŠăźăă¨ăŠăźăéçĽăăžăă Haskellă§ăŻăăăăŻé常ăŤç°Ąĺă§ăă 2ă¤ăŽć°ăăĺă厣č¨ăăžăăăă
data DistanceInMeters = Meter Double data DistanceInInches = Inch Double
DistanceInMeters
ă¨
DistanceInInches
ăŻăżă¤ăăłăłăšăăŠăŻăżăźă¨ĺźă°ăă
Meter
ă¨
Inch
ăŻăăźăżăłăłăšăăŠăŻăżăźă¨ĺźă°ăăžăďźăżă¤ăăłăłăšăăŠăŻăżăźă¨ăăźăżăłăłăšăăŠăŻăżăźăŻç°ăŞăăšăłăźăăŤĺĺ¨ăăăăăĺăăăăŤăăăă¨ăă§ăăžăďźă
ăăăăŽĺ厣č¨ăčŚăŚăă ăăă ăăźăżăłăłăšăăŠăŻăżăźăŻé˘ć°ăŽăăăŤĺä˝ăăĺźć°ă¨ăăŚ
Double
ĺăŽĺ¤ăĺăăč¨çŽăŽçľćă¨ăăŚ
DistanceInMeters
ĺăžăăŻ
DistanceInInches
ĺăŽĺ¤ăčżăă¨ćăăžăăăďź ăăă§ă-ăăźăżăłăłăšăăŠăŻăżăźăé˘ć°ă§ăďź ăăăŚă䝼ĺăŤčޤăŁăŚ
Double
ĺăŽĺ¤ă
Double
ăĺăé˘ć°ăŤć¸Ąăăă¨ăă§ăăĺ ´ĺăăăŽé˘ć°ă§ăŻăĺźć°ăŤ
Double
ĺăŽĺ¤ă ăă§ăŞăă
ä˝ăäťăŽă㎠ăă¤ăžă- ÂŤÂť
Meter
Inch
.
ăă ăăăăŽĺ ´ĺăćăä¸čŹçăŞă˝ăŞăĽăźăˇă§ăłăŻĺžăăăžăăă§ăăăĺ˝ç¤žăŽćŠč˝konstruktory_dannyhăŽĺźć°Meter
ă¨Inch
ăŽĺăŽĺ¤ăŽăżăĺăăă¨ăă§ăăžăDouble
ăăăăŻăăăŽçšĺŽăŽăżăšăŻăŽăă¸ăăŻăŤăăŁăŚćąşĺŽăăăžăăăăĄă¤ăłăżăšăŻă解湺ăăăăăŤ-ç´ç˛ăŞăłăłăăĽăźăăŁăłă°ăăäťăŽä˝ăăăăĺé˘ăăžă-ăăŽăäťăŽä˝ăăă襨çžăăăăŠăăăźăă彟ăăŽĺźć°ăĺăăă¨ăă§ăăĺż
čŚăăăăžăăżă¤ăăăžăăăăŽăżăšăŻăŻHaskellă§é常ăŤç°ĄĺăŤč§Łćąşă§ăăžăăHaskellçľăżčžźăżăżă¤ăăŽ1ă¤ăčŚăŚăă ăăă data Maybe a = Nothing | Just a
ăăăŤć¸ăăăŚăăăă¨ăç解ăăŚăăŞăäşşăŽăăăŽčŞŹć, Maybe
, a
. ÂŤ Âť , â Double
, Bool
, DistanceInMeters
, . , Maybe a
2 â Nothing
Just
( a
). ÂŤÂť: Nothing
, Just
- (, Just True
) â Maybe a
( Just
True
, Maybe Bool
).
čŚăŚăMaybe
ăŠăăŞăżă¤ăăŽĺ¤ă§ăĺăăă¨ăă§ăăăŠăăăźăăăăžăăăăŽăŠăăăźăŤăŻăä˝ăăăŽĺ¤ăĺŤăăăă¨ăă§ăăžăďźăăźăżăłăłăšăăŠăŻăżăźă使ç¨ăăĺ ´ĺJust
ďźăăä˝ăĺŤăăăă¨ăŻă§ăăžăăďźăăźăżăłăłăšăăŠăŻăżăźă使ç¨ăăĺ ´ĺNothing
ďźăăŠăăăźĺ
ăŤăăźăżăăăăăŠăăă確čŞăăăŤăŻăăŠăăăźMaybe
ăć¤ćťăăă ăă§ăăăăă玹ăŽăăăŞăăŽă§ăă玹ă犺ăăŠăăă確čŞăăăăăŤă玹ăéăăĺż
čŚăŻăăăžăăă玹ăčłăŤćăŁăŚăăŚćŻăă ăă§ăăHaskellăŻăĺMaybe
ă使ç¨ăăŚĺéĄăŽ1ă¤ă解湺ăăžăăăăšăŚăŽĺźć°ăŤĺŻžăăŚĺŽçžŠăăăŚăăŞăç´ç˛ăŞé˘ć°ăăŠăĺŚçăăăă§ăăăă¨ăă°ăé˘ć°ăăăăžălookup
ăăăźă¨ăă˘ăŽéŁćłăŞăšăďźăăźăĺ¤ďźă渥ăăŚăăăŽăăźăŤé˘éŁäťăăăăĺ¤ăčŚă¤ăăăă¨ăă§ăăžăăăă ăăăăŽé˘ć°ăŻă渥ăăăăăźă¨ăŽăă˘ăčŚă¤ăăăăŞăĺ ´ĺăăăăžăăăăŽĺ ´ĺăăăăŻç§ăăĄNothing
ăŤčżăăăăăăčŚă¤ăăŁăĺ ´ĺăăŤăŠăăăăăĺ¤ăç§ăăĄăŤčżăJust
ăžăăă¤ăžă
é˘ć°ăŤĺŽçžŠăăăĺ¤ă渥ăă¨ăč¨çŽăŽçľćăďźăŠăăăźă§Just
ďźĺĺžăăĺŽçžŠăăăŚăăŞăĺ¤ă渥ăă¨ăăä˝ăäťăŽăăŽăďźNothing
ďźăĺĺžăăžăăăăăNothing
ăă ăă§ăŞăăé˘ć°ăč¨çŽăŽçľćă§ăŻăŞăăäťăŽä˝ăăăčżăăççąăŤé˘ăăăĄăăťăźă¸ăĺĺžăăăĺ ´ĺăŻăŠăă§ăăăăăĺéĄăăăć確ăŤĺŽçžŠăăžăăăďźč¨çŽăćĺăăĺ ´ĺăçľćăčżăăăĺ ´ĺăăăăłĺ¤ąćăăĺ ´ĺăŻăă¨ăŠăźăĄăăťăźă¸ăč¨çŽăŽçľćăă¨ăŠăźăĄăăťăźă¸ăŻăăžăăžăŞăżă¤ăăŤăŞăăžăă OKăăăŽăăăŤć¸ăăžăăăďź data Either ab = Left a | Right b
ĺăłăłăšăăŠăŻăżEither
ăŻăĺăŽ2ă¤ăŽĺ¤ć°ăĺăĺ
Ľăăăă¨ăăăăăžă- a
ăăăłb
ďźç°ăŞăĺă§ăăĺăĺă§ăăăžăăžăăďźăč¨çŽăŽçľćăćĺăăĺ ´ĺăăăăăăŠăăăźă§ĺĺžăRight
ďźč¨çŽăŽçľćăŻtypeăŤăŞăăžăb
ďźăč¨çŽă夹ćăăĺ ´ĺăăăźăżăłăłăšăăŠăŻăżăźăŽăŠăăăźă§aăŽă¨ăŠăźăĺĺžăăžăLeft
ăăăŚăĺ¤é¨ç°ĺ˘ă§ăŽä˝ćĽăŻăŠăă§ăăďźč¨çŽăŽĺ¤ăä˝ăăăŽĺ¤é¨ç°ĺ˘ăŤäžĺăăŚăăĺ ´ĺăŻăĺż
čŚăŞĺ¤ăč¨çŽăăé˘ć°ăŤčŞăżčžźăă§ĺźć°ă¨ăăŚć¸Ąăĺż
čŚăăăăžăăďźčż°ăšăăăăŤăăăăŚć¸ăăŚăă ăăďź data Reader ea = Reader (e -> a)
č¨çŽçľćăäžĺăăç°ĺ˘ăŻĺĺ¤ć°ă§ç¤şăăe
ďźĺĺ¤ć°ăŽäťŁăăăŤĺż
čŚăŞĺăŤç˝Žăćăăăă¨ăă§ăăăă¨ăćăĺşăăŚăă ăăďźăč¨çŽçľćăŽĺăŻĺĺ¤ć°ă§ç¤şăăăžăa
ăăăăŤăč¨çŽčŞä˝ăŤăŻtypeăe -> a
ăăăžăăç°ĺ˘ăăĺż
čŚăŞäžĄĺ¤ă¸ăŽćŠč˝ă§ăăĺăăă¨ăăĺä¸ăŽçľćăžăăŻäťăŽä˝ăďźăźăăŽçľćăžăăŻĺ¤ăăŽçľćďźăčżăĺŻč˝ć§ăŽăăéćąşĺŽçč¨çŽăŤăĺ˝ăŚăŻăžăăžăăăăăăčż˝ĺ ăŽĺă§ăŠăăăăžăăăăăŚăăăŞăăŻăăăăçĽăŁăŚăăăăŽăżă¤ă-ăŞăšăăŽăăŽăżă¤ă[a]
ďźăŽăăăŤć¸ăăă¨ăă§ăăžăăăăŽăäťăŽä˝ăăă襨ăăĺ¤ć°ăŽĺ-ĺ˝ç¤žăŽç´č¨çŽăŽăżă¤ăďźă[] a
[]
a
ç´ç˛ăŞč¨çŽăŽĺŽčĄă¨ä¸ŚčĄăăŚĺ¤ć´ăăĺż
čŚăăăçść
ă§ăăăă¨ăăăă°ăŠă ăŽĺŽčĄä¸ăŤçşçăăĺŻč˝ć§ăăăäžĺ¤ă§ăăăă¨ăăäťăŽä˝ăăăŤă¤ăăŚăĺăăă¨ăčĄăăžăăç§ăăĄăŻăç§ăăĄă§ăăŠăăăăăĄăŽç´ç˛ăŞč¨çŽăŽăŻăŠăšă§ăŻăăăŽăä˝ăăăăăŤăăťăŤĺăăăäťăŽä˝ăăăŽĺŚçă¨2ă¤ăŽä¸ŚĺăšăăŞăźă ä¸ăŽăăăăŽč¨çŽăĺ
ąćăăç§ăăĄăĺăçľăă§ăăăăăăăăć確ăŤăăăŽćçšă§ĺŚăă ăă¨ăăžă¨ăăŚčŚç´ăăžăăăăç´ç˛ăŞé˘ć°ă使ç¨ăăăă¨ăŤăăăč¨çŽăŽä¸Śĺĺăăłăłăă¤ăŠăŤăăč¨çŽăŽćéŠĺăé常ăŤĺ¤§ăăŞăăă°ăŠă ă§ăăăšăăăľăăźăăăŞăăĄăŻăżăŞăłă°ăŽĺŽšćăăŤé˘éŁăă大ăăŞĺŠçšăĺžăăă¨ăă§ăăžăă
, , , ÂŤ- Âť. , , ÂŤ- Âť, ÂŤ- Âť.
ÂŤ- Âť, . ÂŤ- Âť .
ÂŤ- Âť ÂŤÂť , ÂŤÂť .
:
a -> mb
m
â ÂŤ Âť, b
.
, . , - :a -> b
, .. . ma
. ma -> mb
, , ÂŤÂť a -> b
m
, a -> b
, mb
.
, , first class citizens. ă¤ăžă , â , .. , , , ÂŤÂť m
. f
, a
, , mf
ma
, ÂŤ Âť:
mf ` ` ma => m (f ` ` a).
, , , , , , . f :: b -> c
g :: a -> b
, f . g
, g
, f
. f :: b -> mc
g :: a -> mb
? mb
b
â , , b
ÂŤÂť m
.
ÂŤÂť b
m
揥ăŽé˘ć°ăŽĺ¤ă¨ăăŚć¸ĄăăăăĺŽéăç´ç˛ăŞč¨çŽă¨ä¸ŚčĄăăŚăăăŠăăăźăăŤăŻăäťăŽä˝ăăăŽč¨çŽăăăăăăŽč¨çŽăŽçľćă揥ăŽé˘ć°ăŤć¸Ąăĺż
čŚăăăăžăăä¸čŹçăŤăćă
ăŻćŠč˝ăkompozirovată§ăăćšćłăććĄăăĺż
čŚăăăa -> mb
ă¨b -> mc
ç§ăăĄăŻăăăăć°ăăćŠč˝ăĺžăăă¨ăă§ăăăă¨a -> mc
ăăăăłăăŽçľćçŠăŻăćă
ăŻăăäťăŽä˝ăăăŽăŞăč¨çŽăăăăč¨çŽă夹ăŁăŚăăŞăăăŚăăŞăă¨ăăăăăŤăăăăăć˘ăŤć¨ć¸ŹăăăŚăăăăăŤăç§ăăĄăŽă˝ăŞăĽăźăˇă§ăłăćŽéçă§ăŞăăă°ăŞăăžăăă
ăăĄăłăŻăżăźăŻç°Ąĺă§ăŻăăăžăăăăé常ăŤç°Ąĺă§ăďź
ăăăăŁăŚă3ă¤ăŽăżăšăŻăăăăžăăăŠăăăăăĺ¤ăŤé常ăŽĺ¤ă§ćŠč˝ăăć˘ĺăŽé˘ć°ăăŠăŽăăăŤéŠç¨ă§ăăăăç解ăăăăă
, , , .
, , â , , , ÂŤ- Âť, .
ĺĺă¨ăăŚăfunktsionalschikiăŻć ć°ăŞäşşă§ăŻăŞăăŁăĺ ´ĺă彟ăăŻčăimperativschikamiăăăŚăăă ăă§ĺ
ăžăăăăźăżăćä˝ăăăăăŽć°ćŠč˝ăŽćăć¸ăăžăăăisChar :: a -> Bool
渥ăăăĺ¤ăĺăŽĺ¤Char
ă§ăăăăŠăăăăă§ăăŻăăé˘ć°ăŽéĄäźźçŠăćąşĺŽăăăŤăŻăăŠăăăźĺăŽăăźăżăłăłăšăăŠăŻăżăźă¨ĺăć°ăŽćšç¨ĺźăč¨čż°ăăĺż
čŚăăăăžăăăă¨ăă°ăăŠăăăźăżă¤ăMaybe a
ăŤăŻ2ă¤ăŽăăźăżăłăłăšăăŠăŻăżăźăJust
ăăNothing
ăžăă maybeIsChar :: Maybe Char -> Maybe Char -> Maybe Bool maybeIsChar (Just x) = Just (isChar x) maybeIsChar Nothing = Nothing
ăăŽăăăăăăăďźăăăŻčŚăçŽă§ăŻăăăžăăďźăăăŤăăŠăăăăăăăźăżăćä˝ăăăăăŽĺç´ç˛é˘ć°ăŽéĄäźźçŠăĺŽçžŠă§ăăžăăăăăŚăé˘ć°ăă¨ăŤă ăă§ăŞăăăŠăăăźăă¨ăŤĺŻžĺżăăă˘ăăă°ăč¨čż°ăăĺż
čŚăăăăžăďźăăăăăăăŻĺĽăŽćšćłă§čĄăăă¨ăă§ăăžăăć˘ăŤćăŁăŚăăç´ç˛ăŞé˘ć°ăćĺăŽĺźć°ă¨ăăŚĺăĺăăăăăăŠăăăźăŤĺŤăžăăĺ¤ăŤéŠç¨ăăć°ăăé˘ć°ăĺŽçžŠăăŚăĺăăŠăăăźăŤăŠăăăăăć°ăăĺ¤ăčżăăă¨ăă§ăăžăăăăŽé˘ć°ăĺźăłĺşăăžăfmap
ďź fmap :: (a -> b) -> ma -> mb
ăăă§ăăŠăăăźăżă¤ăăă¨ăŤé常ăŽé˘ć°ăŽä˝çžăăŽéĄäźźçŠăĺŽçžŠăă䝣ăăăŤăăŠăăăźăżă¤ăăă¨ăŤé˘ć°ă1ă¤ă ăĺŽçžŠă§ăăžăfmap
ăfmap
ăŠăăăźăżă¤ăăŽé˘ć°ăĺŽçžŠăăžăăăMaybe a
ďź fmap f (Just x) = Just (fx) fmap _ Nothing = Nothing
ăăăŚă2çŞçŽăŽĺźăŽfmapé˘ć°ăŽćĺăŽĺźć°ăŽäťŁăăăŤăăŽä¸çˇăŻä˝ă§ăăďźfmap
a -> b
. , , , , . - , . , .
ăăă§ăăŠăăăăăĺăŽĺ¤ăŤMaybe a
ĺé˘ć°ăéŠç¨ă§ăăžăa -> b
ăé˘ć°fmap
ă1ă¤ă ăĺŽçžŠăăăă¨ă§ăĺ¤ăăŽčż˝ĺ ä˝ćĽăăŞăăăă¨ăŤĺćăăžăăĺăăăŹăźăşăŽçşéłăŻç°ăŞăĺ ´ĺăăăăžăăăŠăăăźĺăMaybe a
ăăĄăłăŻăżăźăŤăăăăăĺ¤ăăŽčż˝ĺ ä˝ćĽăăŞăăŞăăžăăăăŻăăăŻăďź
ăŠăăăźĺăăăĄăłăŻăżăźăŤăăăŤăŻăé˘ć°ăĺŽçžŠăăĺż
čŚăăăăžăfmap
ăăăăŤăăăé常ăŽĺ¤ă§ćŠč˝ăăé˘ć°ăăŠăăăźăŤă注ĺ
Ľăă§ăăžăăăăĄăłăŻăżăźăŻé常ăŤăˇăłăăŤă ă¨č¨ăăžăăďźäžżĺŠă§ă ăăăŤăăă䝼ĺăŤĺŽçžŠăăăç´ç˛ăŞé˘ć°ăé常ă ăă§ăŞăăăŠăăăăăĺ¤ă§ă使ç¨ă§ăăžăăéŠç¨ăăĄăłăŻăżăźăé常ăŤç°Ąĺă§ăďź
ăŠăăăăăŚăăŞăĺ¤ă§ćŠč˝ăăé˘ć°ăăŠăăăăăĺ¤ăŤéŠç¨ăăćšćłăčŚă¤ăăžăăăăăăăé˘ć°čŞä˝ăăŠăăăăăŚăăĺ ´ĺăŻăŠăă§ăăăăďźăŠăăăăăĺ¤ăŤăŠăŽăăăŤéŠç¨ăăžăăďźć¨ć¸Źăăă¨ćăăžăăăŠăăăăăé˘ć°ăćĺăŽĺźć°ă¨ăăŚăăŠăăăăăĺ¤ă2çŞçŽăŽĺźć°ă¨ăăŚă¨ăé˘ć°ă厣č¨ăăăăŽăăăŞćä˝ăĺż
čŚăŞăŠăăăźăżă¤ăăă¨ăŤăăŽé˘ć°ăĺŽçžŠăăĺż
čŚăăăăžăăăăŽé˘ć°ăĺźăłĺşăăžă<*>
ďźread apply; é˘ć°ăŽĺĺăââĺ°ćĺă§ăŻăŞăçšćŽćĺă§ĺ§ăžăă¨ăăäşĺŽăŻăä¸ç˝Žĺ˝˘ĺźă§ä˝żç¨ăăĺż
čŚăăăăă¨ă示ăăŚăăžăăé常ăŽé˘ć°ăŽăăăŤćĽé čžĺ˝˘ĺźă§ä˝żç¨ăăĺ ´ĺăŻăćŹĺź§ă§ĺ˛ăĺż
čŚăăăăžăďźďź (<*>) :: m (a -> b) -> ma -> mb
typeăŤĺŻžăăŚĺŽŁč¨ăăăé˘ć°ăĺŽçžŠăăžăăăMaybe a
ăĺćăŤăăăŽĺăŤăŻ2ă¤ăŽăłăłăšăăŠăŻăżăźăăăăă¨ăćăĺşăăŚăă ăăăă¤ăžăăăăŽĺă§ăŠăăăăăé˘ć°ă¨ăŠăăăăăĺ¤ăŻďźJust
ďźăžăăŻNothing
ďźăŽăăăăă§ăă (Just f) <*> Nothing = Nothing Nothing <*> _ = Nothing (Just f) <*> (Just x) = Just (fx)
ăăă§ăćĺăŻé常ăŽĺ¤ă§ăăĺä˝ăăŞăăŁăăŠăăăăăé˘ć°ăăŠăăăăăĺ¤ăŤéŠç¨ă§ăăžăďźăŠăăăźătypeă§ăăĺ ´ĺďźMaybe
ăäťăŽăŠăăăźă§ăĺăăă¨ăă§ăăăăăŤăăăĺ ´ĺăĺż
čŚăŞăŽăŻăăăăŽăăăăăŤĺŻžăăŚé˘ć°ăĺŽçžŠăăăă¨(<*>)
ă§ăăč¨ăćăăă¨ăăăăăŽăŠăăăźăă˘ăăŞăŤăăŁăăăĄăłăŻăżăŤăăĺż
čŚăăăăžăăé˘ć°(<*>)
ă¨ăĺŽçžŠăăăŚăăăŠăăăźăżă¤ăăŻă˘ăăŞăŤăăŁăăăĄăłăŻăżă§ăăăăă§ăpure
ăé˘ć°pure
ăŻä˝ăăăžăăďźăăăăăĄăłăŻăżăźăĺżç¨ăăĄăłăŻăżăźăăăç°Ąĺă§ăďźăăŽé˘ć°pure
ăŻé常ăŽĺ¤ăĺăăăăăăăŠăăăăăĺ¤ăä˝ćăăžăă彟弳ăŽăżă¤ăăŻćŹĄăŽă¨ăăă§ăă pure :: a -> ma
pure
ăŠăăăźĺăŽé˘ć°ăĺŽçžŠMaybe
ăăŚăĺŽéăŽéŠç¨ĺŻč˝ăŞăăĄăłăŻăżăźăŤăăžăă pure x = Just x
ăăšăŚăé常ăŤč¤éă§ăăăďźďźç˘ćăSarcasmďźăăŽăăŹăźăďźă¨ăăă§ăăŠăăăźĺăéŠç¨ĺŻč˝ăŞăăĄăłăŻăżăźăŤăăăă¨ă§ă寞ĺżăăć°ăŽăŠăăăăăĺźć°ăŤäťťćăŽć°ăŽé常ăŽĺźć°ăĺăé˘ć°ăéŠç¨ă§ăăžăďźăăĄăłăŻăżăźăŻă1ă¤ăŽĺźć°ăŽé常ăŽé˘ć°ăŽăżăăŠăăăăăĺ¤ăŤéŠç¨ă§ăăžăďźăăăăŻăäžăă°ăćă
ăčż˝ĺ ă§ăăăăă§ăăJust 2
ă¨Just 3
ďź pure (+) <*> Just 2 <*> Just 3 > Just 5
ăłăźăăŻĺŽĺ
¨ăŤć確ă§ăŻăăăžăăăďźpure Maybe
(+)
, . 2 (<*>)
.
ăăŽć§ćăŻĺĽ˝ăă§ăŻăăăžăăăďźăăă芌ăăŚăă ăăďź, , .
liftAN
, A Applicative (functor), N , , . (+), :
liftA2 (+) (Just 3) (Just 2) > Just 5
, :
( | a + b | )
( | (Just 3) + (Just 2) | ) > Just 5
ăăŞăăŻçŹăăžăăăă˘ăăăç°Ąĺă§ăďź
ăăă§ăďź1ă¤ăŽĺźć°ăŽďźé常ăŽé˘ć°ăăŠăăăăăĺ¤ăŤéŠç¨ăăćšćłăčŚă¤ăăžăăăăăăčĄăăŤăŻăăŠăăăźăżă¤ăăŽé˘ć°ăĺŽçžŠăăĺż
čŚăăăăžăfmap
ăăăăŚăăăŽé˘ć°ăăŠăăăźăżă¤ăăŤĺŽčŁ
ăăăăăăăĄăłăŻăżăźăŤăŞăăăăŤĺż
čŚăŞăăŽăŻä˝ăăŞăăăăčŞăăăăŤăăĄăłăŻăżăźă¨ĺźă°ăă樊ĺŠăăăăžăăăžăăăŠăăăăăĺ¤ăŤăŠăăăăăé˘ć°ăéŠç¨ăăćšćłăčŚă¤ăăžăăăăăăčĄăăŤăŻăăŠăăăźăżă¤ăăŤ2ă¤ăŽé˘ć°ăĺŽçžŠăăĺż
čŚăăăăžă- pure
ăăăŚ<*>
-ăžăăăăăŤăăăäťťćăŽć°ăŽĺźć°ăĺăăŠăăăăăĺ¤ăŤé常ăŽé˘ć°ăéŠç¨ă§ăăžăăăăăăŚăăăăăŽé˘ć°ăăŠăăăźăżă¤ăăŤĺŽçžŠăăă¨ăăăŤăă˘ăăŞăąăźăˇă§ăłăăĄăłăŻăżă¨ĺźă°ăă樊ĺŠăç˛ĺžăăžăăăă¨ăăă§ăăŠăăăźĺăéŠç¨ĺŻč˝ăŞăăĄăłăŻăżăźăŤăăăăăŤăŻăćĺăŤé常ăŽăăĄăłăŻăżăźăŤăăĺż
čŚăăăăžăďźăăăŚăăăźăăăăă¨ăŻă§ăăžăă-ăłăłăă¤ăŠăźăŻăăăŤĺžăăžăďźăăăăŤăŻčŤççăŞďźăăăŚăăă¤ăăŽăăăŤăç°ĄĺăŞďźčŞŹćăăăăžăăăăŽč¨äşăŻăă§ăŤé常ăŤč¨ăä¸ăăŁăŚăăăŽă§ăăăŞăčŞčşŤă§ĺ埡ăăăăăŤćŽăăŚăăăžăăăăăŻăćă
ăŻ2ă¤ăŽćŠč˝ăŽć§ĺłăä˝ăăă¨ăă§ăăćšćłăç解ăăăăăŤç§ăăĄăŽăăăŤćŽăŁăŚăăa -> mb
ăă¨b -> mc
ăăŽăăăç´ç˛ăŞč¨çŽăŽçľćă¨ăăŠăăăźăŤĺŤăžăăăäťăŽä˝ăăăč¨çŽăăçľćăŽä¸ĄćšăăćĺăŽé˘ć°ăă2çŞçŽăŽé˘ć°ăŤčť˘éăăăžăăăăăăć˘ăŤć¨ć¸ŹăăăŚăăăăăŤăăăŽăăăŤăŻăăŠăăăźăżă¤ăăŤĺŻžăăŚ1ă¤ăžăăŻ2ă¤ăŽé˘ć°ăĺŽçžŠăăĺż
čŚăăăăžăăăăăŚăćăçŹĺľçăŞäşşăŻăăăăăŽé˘ć°ăĺŽçžŠăăăăŠăăăźĺăă˘ăăă¨ĺźă°ăăăă¨ăăă§ăŤç解ăăŚăăžăăăăăăŽé˘ć°ăŽćĺăŻé˘ć°return
ă§ăăreturn
é˘ć°ăăăŽĺşĺŁçšăĺŽçžŠăăăă¨ăŻĺż
é ă§ăŻăăăžăăă Haskellé˘ć°return
ăŻé常ăŽĺ¤ăĺăăăăăăăŠăăăăăĺ¤ăä˝ćăăžăă return :: a -> ma
pure
ăŠăăăźĺăéŠç¨ĺŻč˝ăŞăăĄăłăŻăżăźăŤĺ¤ăăçŤ ăŽé˘ć°ăŽăăăŤčăăăžăăďźă¤ăžăăăăăăŽé˘ć°ăŻĺăäťäşăăăžăăăăăŚăă˘ăăăä˝ćăăăăŠăăăźĺăŻăćĺăŤéŠç¨ĺŻč˝ăŞăăĄăłăŻăżăźďźăăăŚăăŽĺăŤ-ĺăŞăăăĄăłăŻăżăźďźăŤăŞăăŞăăă°ăŞăăŞăă¨ăăăŤăźăŤăăăăžăăă¤ăžăăăăŽăŠăăăźĺăŤĺŻžăăŚăăă§ăŤç´ç˛é˘ć°return
ăĺŽçžŠăăŚăăăŽă§ăé˘ć°ăé常ăŤĺŽçžŠă§ăăžăăˇăłăăŤďź return = pure
ăŠăăăźĺăă˘ăăăŤăăăăăŤĺŽçžŠăăĺż
čŚăăă2çŞçŽăŽé˘ć°ăĺźăłĺşăăăžă(>>=)
ďźčŞăżĺăăă¤ăłăďźă揥ăŽăżă¤ăăăăăžăă (>>=) :: mb -> (b -> mc) -> mc
ăăźă...ăăăŻĺŽéăŤćŠč˝ăŽć§ćăŤäźźăŚăăŞăä˝ăăăăă§ăăé˘ć°(>>=)
ăŻăŠăăăăăĺ¤ă¨type ăŽé˘ć°ăĺăĺăăa -> mb
ăżă¤ăăŠăăăźă§ăŠăăăăăç´ç˛ăŞč¨çŽăŽçľćă¨ăä˝ăăăč¨çŽăăçľćďźăžăăŻăăăäżĺăăçľćďźăŽä¸ĄćšăăăŽé˘ć°ăŤć¸ĄăćšćłăćąşĺŽăăĺż
čŚăăăăžăăŠăăăźčŞä˝ăŤĺŤăžăăăč¨çŽăăčĄăăăŞăăŁăĺ ´ĺăŻăăăŽäťăăă¤ăžă
ăăŽĺ ´ĺăé˘ć°ă襨示ăăa -> mb
ăăăŽçľćă¨ăăŚĺăŽĺ¤ăĺĺžăăžăămb
ăă¤ăžăăăă§ăŤăŠăăăŤăăă¨ăăăă¨ă§ăăăă ăăăăŽé˘ć°ă使ç¨ăăŚăć§ćé˘ć°ăĺ°ăĺžă§ĺŽçžŠăăžă(>>=)
ăăăăžă§ăŽéăăăăăăŚăă ăăăăŠăăăźăŽtypeăĺŽčŁ
(>>=)
ăăžăăăMaybe
ă彟ăŤăŻ2ă¤ăŽăăźăżăłăłăšăăŠăŻăżăźăăăăăăăăăŤăŻ2ă¤ăŽćšç¨ĺźăĺż
čŚă§ăăăarrow to Leysleyăă¨ăăĺĺăăăb -> mc
ćĺăŽăăăŞé˘ć°ăĺźăłĺşăăžăăăďźé常ăŽĺ¤ăĺăăăŠăăăăăĺ¤ăčżăé˘ć°ăŻăăšăŚăClaysley Arrowsăă¨ĺźă°ăă䝼ĺăŤĺŽčŁ
ăăé˘ć°ăăClaysley Arrowăă§ăďźďźk
return
â Nothing, Nothing Nothing >>= _ = Nothing â , "" k (Just x) >>= k = kx
䝼ä¸ă§ăă
ăŠăăăźĺMaybe
ăŻă˘ăăăŤăŞăăžăăďźăăăăăăăăŤăăŞăăă°ăŞăăŞăăŁăăă¨ăŻăćŠč˝return
ă¨ăăăćąşĺŽăăăă¨(>>=)
ă§ăăăďźç´ç˛ăŞćŠč˝ăćäžăăäżćăăĺŠçšăŤĺ ăăŚďźăăăŻç§ăăĄăŤä˝ăä¸ăăžăăăďźćĺłăäźăăăăŻăŠă¤ăşăŞăźăŽç˘ĺ°ăŽăłăłăă¤ăźĺ
¨ä˝ăćłĺăăŚăă ăăăăăăăŽĺClaysleyç˘ĺ°ăŻMaybe
ăăăźăżăłăłăšăăŠăŻăżăźă使ç¨ăăŚăŠăăăźăŤăŠăăăăăĺ¤Just
ăăžăăŻNothing
ăćăăăŤăăăŽăă§ăźăłăăăŽăă税ăŽKleisleyç˘ĺ°ăăä¸ăăNothing
ĺ ´ĺăăăŽĺ¤ăăă¤ăăŠă¤ăłăŤć˛żăŁăŚăăăŤć¸Ąăăă¨ăŻćĺłăăăăžăăăăăă§ăç§ăăĄăŻä˝ăăăžăăďźĺç˘ĺ°ăŽćä˝ĺžăăŻăŹă¤ăşăŞăźăŻĺŠăăĺăăŚăă§ăăŻăif then else
ăĺăŽé˘ć°ăčżăăžăăă§ăăNothing
ăďźçĺ¸ăŻăžăăŤăăăčĄăăĺ¤ăăŽăăšăăăăć§é ăăstructuresăć§é ăć§çŻăăžăif then else
ăăăăă(>>=)
ăăŽăăăŞéŤăŞăă§ăăŽĺéĄă解湺ăăé˘ć°ăĺŽçžŠăăžăăăčŞĺă§ç˘şčŞăăŚăă ăăďźăŠăăNothing
ăŤçžăăĺ ´ĺăćźçŽĺăŻ(>>=)
é˘ć°ăŤć¸ĄăăăŤăă¤ăăŠă¤ăłăŽćĺžăžă§ĺç´ăŤăăšăăŹăăăăăžăăăăăăŁăŚănull㎠ăă§ăăŻăĺżé
ăăăă¨ăŞăăč¨çŽăă§ăźăłăä˝ćă§ăăžăNothing
ăă˘ăăă使ç¨ăăă¨ăç´ç˛ăŞé˘ć°ă使ç¨ăăĺŠçšăçśćă§ăăă ăă§ăŞăăăłăźăăăŻăăăŤĺ°ăŞăč¨čż°ă§ăăăłăźăčŞä˝ăăŻăăăŤčŞăżăăăăŞăăžăăăăăŚăăăăŤăăă¤ăăŽă˘ăăăĺŽçžŠăăžăăă
ăă1ă¤ăŽă˘ăăăĺŽçžŠăăžăăăăďźĺEither ab
ăăăă¨ăŠăźă¨äžĺ¤ăăăć確ăŤĺŚçă§ăăăŠăăăźĺă使ç¨ăăžăMaybe
ăăăŽăżă¤ăăŽĺŽçžŠăćăĺşăăŚăżăžăăăă data Either ab = Left a | Right b
-ăăŽăżă¤ăăŻ2ă¤ăŽăłăłăšăăŠăŻăżăăŽăăăăăćăŁăŚăăLeft
-ĺ
ĽĺăăăăăŤč¨ĺŽăăăŚăăa
-ăăăŻćă
ăăŠăăăźă§ăăă¨ăŠăźăĄăăťăźă¸ăŤä˝żç¨ăăăă¨ăŽăżă¤ăăŻăăăŽăăăŤăäťăŽä˝ăăăăăŚăăă珏äşăŻă - Right
-ăżă¤ăăŤč¨ĺŽăăăŚăăžăb
-ăăăăĺşćŹçăŞăč¨çŽăŽăżă¤ăă§ăă ăĺşćŹçăŞăč¨çŽăéĺ°ăŤčĄăăăŞăĺ ´ĺăč¨çŽăŽĺ¤ăŻClaysleyç˘ĺ°ăŽć§ćăŽăă§ăźăłăŤć˛żăŁăŚăăźăżăłăłăšăăŠăŻăżăźă§ăŠăăăăRight
ăžăăăăăŚăă¨ăŠăźăçşçăăă¨ăăăŤ-ăăźăżăłăłăšăăŠăŻăżăźă使ç¨ăăŚăŠăăăăăçľćăŽăĄăăťăźă¸ăĺĺžăăžăLeft
ăćĺăŤé˘ć°ăĺŽçžŠăăžăreturn
ďź return x = Right x
ăăă§ăŻăăšăŚăćăăă§ăăreturn
ă¨ăŠăźăĄăăťăźă¸ăé˘ć°ăŤć¸ĄăăŽă§ăŻăŞăăä˝ăăăŽĺăŽĺ¤b
ă渥ăăăăăăźăżăłăłăšăăŠăŻăżé˘ć°ăăăŽĺ¤ăŤéŠç¨ăRight
ăŚĺăŽĺ¤ăĺĺžăăžăEither ab
ăăăă§ăćźçŽĺăĺŽçžŠăăžă(>>=)
ăăăă§ăŽăă¸ăăŻăŻă˘ăăă¨ĺăMaybe
ă§ăďźăă§ăźăłăŤć˛żăŁăŚăżă¤ăĺ¤ă渥ăăăĺ°ăŞăă¨ă1ă¤ăŽKleisleyç˘ĺ°Either ab
ăăăăźăżăłăłăšăăŠăŻăżăźé˘ć°Left
ă§ăŠăăăăăă¨ăŠăźăĄăăťăźă¸ă襨示ăăĺ ´ĺăč¨çŽăă§ăźăłĺ
¨ä˝ăŽçľćăŻăăŽă¨ăŠăźăĄăăťăźă¸ăŤăŞăăžăăăăšăŚăŽč¨çŽăćĺăăĺ ´ĺďźă¤ăžăăĺClaysleyç˘ĺ°ădata_constructoré˘ć°ă使ç¨ăăŚăŠăăăăăč¨çŽăŽçľćăčżăăĺ ´ĺďźRight
ďźă揥ăŽĺćŠč˝ăăăŽçľćăŤéŠç¨ăăĺż
čŚăăăăžăă (Left x) >>= _ = Left x (Right x) >>= k = kx
ă˘ăăMaybe
ăŞăŠEither
ăăŠăĄăăŤă2ă¤ăŽăăźăżăłăłăšăăŠăŻăżăźăăăăăăŽăăĄăŽ1ă¤ăŻč¨çŽăŽĺ¤ąćă示ăăžăďźăăăăŁăŚă揥ăŽé˘ć°ăŤć¸ĄăăăŤăăŻăŹă¤ăşăŞăźăŽç˘ĺ°ă§ăłăłăă¸ăˇă§ăłăŽćĺžăŤăăăŠăă°ăăăĺż
čŚăăăăžăďźă严ćšăŽă˘ăăăŽ2çŞçŽăŽăăźăżăłăłăšăăŠăŻăżăźăŻăč¨çŽăćŁĺ¸¸ăŤĺŽäşăăăă¨ăćĺłăăăăăăŽč¨çŽăŽĺ¤ăŻćŹĄăŽKleisleyç˘ĺ°ăŤć¸Ąăăăžăăăăă§ăŻă䝼ĺăŤĺŽčŁ
ăăăă˘ăăă¨ăŻç°ăŞăă˘ăăăăŞăšăă˘ăăăĺŽčŁ
ăăžăăăăăŞăšăă˘ăăăŽClaysleyç˘ĺ°ăŽăżă¤ăăŻa -> [b]
ă§ăăćźçŽĺăŽćĺăŽĺźć°(>>=)
ăŻăŠăăăăăĺăŽĺ¤ă§ăma
ăăăŽĺ ´ĺăăăăŻ[a]
ďźĺăŽĺ¤ăŽăŞăšăa
ďźă§ăăăăăŤăăŞăšăăŻçŠşăŽĺ ´ĺăăăă°ăăżă¤ăăŽ1ă¤äťĽä¸ăŽĺ¤ăĺŤăĺ ´ĺăăăăžăa
ăăăŽĺ ´ĺăClaysleyç˘ĺ°ăĺ¤ăŽăŞăšăăŤéŠç¨ăăă¨ăŻăŠăăăćĺłă§ăăďźăăăŻăăŞăšăăŽĺĺ¤ăŤéŠç¨ăăĺż
čŚăăăăă¨ăćĺłăăžăă犺ăŽăŞăšăăŽĺ ´ĺăăăšăŚăć確ă§ăăClaysleyç˘ĺ°ă使ç¨ăăăăŽăŻä˝ăăŞăăŽă§ăçľćă¨ăăŚçŠşăŽăŞăšăăĺĺžăăžăă犺ă§ăŞăăŞăšăăŽĺĺ¤ăŤĺŻžăăŚăé˘ć°ă使ç¨ăăŚClaysleyç˘ĺ°ăéŠç¨ă§ăăžăfmap
ďźăŞăšăăăă˘ăăăä˝ćăăăăăăăăŻăŞăšăăăăĄăłăŻăżăźă§ăăăăă¨ăćĺłăăžă-čŚăăŚăăžăăďźďźăăă ăăfunctionăŽăżă¤ăăćăĺşăăŚăżăžăăăăfmap
äžżĺŽä¸ăć˝čąĄăŠăăăźăżă¤ăm
ăçšĺŽăŽăŠăăăźăŞăšăăżă¤ăăŤç˝Žăćăăžăă fmap :: (a -> b) -> [a] -> [b]
揥ăŤă渥ăăfmap
ăé˘ć°ăŽăżă¤ăăClaysleyç˘ĺ°ăŽăżă¤ăăŤç˝Žăćăăžăă fmap :: (a -> [b]) -> [a] -> [[b]]
Kleisleyç˘ĺ°ă渥ăăçľćfmap
ătype mb
ă§ăŻăŞătypeăŽĺ¤ăĺĺžăăăă¨ăăăăăžămmb
ăäşéăŤăŠăăăăžăăăăăŻoperatorăŽăżă¤ăăŤĺŻžĺżăăŞă(>>=)
ăăăăŠăăăźăŽ1ă¤ăăĺé¤ăăăĺż
čŚăăăăžăăăăăčĄăăŤconcat
ăŻăăŞăšăăŽăŞăšăăĺăĺ
Ľăăĺ
é¨ăŞăšăăéŁçľăăé常ăŽĺ¤ăŽăŞăšăăčżăé˘ć°ăăăăžăăăăă§(>>=)
ăŞăšăă˘ăăăŽćźçŽĺăĺŽçžŠăăćşĺăă§ăăžăăďź [] >>= _ = [] xs >>= k = (concat . fmap k) xs
ćźçŽĺăćąşĺŽăăăă¸ăăŻăŻ(>>=)
ăăăšăŚăŽĺ ´ĺă§ĺăă§ăăăă¨ăăăăăžăăăŠăăăăăĺĺ¤ăŤăŻăč¨çŽăŽçľćă¨ăäťăŽä˝ăăăăăăĺĽăŽé˘ć°ăŤć¸Ąăă¨ăăŤč¨çŽă¨ăăŽăäťăŽä˝ăăă§ä˝ăăăĺż
čŚăăăăăčăăžăă ăăăŽäťăăŻăč¨çŽăŽćĺăžăăŻĺ¤ąćăŽăăźăŤăźăč¨çŽăŽćĺăžăăŻă¨ăŠăźăĄăăťăźă¸ăŽăăźăŤăźăč¨çŽăăźăăăçĄéăŽçľćăčżăăă¨ăă§ăăăăźăŤăźăŽĺ ´ĺăăăăžăă ăäťăŽä˝ăăăŻăă°ă¨ăłăăŞăă¤ăžăčŞăżĺăăăĺşćŹăč¨çŽăŽĺźć°ă¨ăăŚć¸Ąăçść
ăŤăăăă¨ăă§ăăžăăăžăăŻăăĺşćŹăč¨çŽă¨ä¸ŚčĄăăŚăčŞăżĺăăĺ¤ć´ăăăăłĺĽăŽé˘ć°ăŤć¸Ąăăăçść
ăĺ庌ĺ¤ć´ăăžăăă˘ăăăŤăŻč¤éăŞăăŽăŻä˝ăăŞăăă¨ăčŞăăŞăăă°ăŞăăžăăďźăăĄăłăŻăżăźăĺżç¨ăăĄăłăŻăżăźăŽăăăŤďźăă˘ăăăŻă2ă¤ăŽé˘ć°ăĺŽçžŠăăăŚăăĺăŞăăŠăăăźăżă¤ăă§ă- return
ă¨(>>=)
ăăă ăă(>>=)
ăšăăźăăăŤăŠăăăźăŽĺŽçžŠăŻăăč¤éă§ăăăăăăŽĺŽčŁ
ăŤăŻăăăŽč¨äşă§ç´šäťăăăăŽăăăHaskellăŽć§ćăŤç˛žéăăŚăăĺż
čŚăăăăăăăăă§ăŻç´šäťăăžăăăăăăăç§ăŻăăŞăăĺŽĺżăăăăă§ăă珏ä¸ăŤăé常ăŤéŤĺşŚăŞHaskellăăă°ăŠăăźă§ăăăé常ăŻă˘ăăăä˝ćăăăçľăżčžźăżč¨čŞă使ç¨ăăžăăăăăŻăăăăăĺ ´ĺăŤĺĺă§ăă珏äşăŤăă˘ăăďźçść
ă§ĺä˝ăăăăŽăĺŤăďźă使ç¨ăăăă¨ăŻăă˘ăăăĺŽçžŠăăăăăăŻăăăŤç°Ąĺă§ăăăăăŤă¤ăăŚăŻă揥ăŽçŤ ă§čŞŹćăăžăăă˘ăăăç解ăăăŤăŻăĺç´ăŞĺĺăç解ăăĺż
čŚăăăăžăăăĺşćŹçăŞăč¨çŽă¨ă丌čĄăăŚçşçăăăäťăŽä˝ăăăŽč¨çŽăăăăžăăăžăăăăŻăŹă¤ăşăŞăźăˇăĽăźăżăźăăŽăăłăłăă˘ăă§ăăăăŽč¨çŽăăŠăŽç¨ĺşŚćŁç˘şăŤčĄăăăăăŻăăŞăăŹăźăżăźăćąşĺŽă(>>=)
ăžăăăăăăŁăŚăćźçŽĺăčŞĺ(>>=)
ă§ĺŽçžŠăăĺż
čŚăŻăťă¨ăăŠăăăžăăăăăăăŤä˝ăăŠăŽăăăŤçşçăăăăăăăăç解ăăăăăŤăăăžăăžăŞçľăżčžźăżă˘ăăĺăŤĺŻžăăŚĺŽçžŠăăăćšćłăç解ăăăă¨ăŻé常ăŤĺ˝šçŤăĄăžăăăĄăŞăżăŤăćźçŽĺ(>>=)
ăăŻăŹă¤ăşăŞăźăŽç˘ĺ°ăŽĺćăŽĺăć¨ăŚăăăăăźă¸ă§ăłă§ăăă¨č¨ăŁăă¨ăăç§ăŻăăăéăăŚĺŽéăŽĺćăćąşĺŽăăăă¨ăç´ćăăžăăăăăăŻHaskellč¨čŞăŽć¨ćşé˘ć°ă§ăăăă¨čĄ¨ç¤şăă(>=>)
ăăéăďźăéćźçŽĺăďźă¨çşéłăăăžăă (>=>) :: (a -> mb) -> (b -> mc) -> a -> mc (f >=> g) x = fx >>= g
x
ç§ăăĄăćăŁăŚăăăżă¤ăăŻvalue a
ă§f
ăăăg
KleisleyăŽç˘ĺ°ă§ăă Claysleyç˘ĺ°f
ăvalue x
ăŤéŠç¨ăăă¨ăăŠăăăăăĺ¤ăĺĺžăăăžăăăăăŚăčŚăăŚăăăăăŤăăŠăăăăăĺ¤ăClaysleyăŽćŹĄăŽç˘ĺ°ăŤčť˘éăăćšćłăŻăăŞăăŹăźăżăźăçĽăŁăŚă(>>=)
ăžăă揥ăŽăăźăă§ăŻăHaskellč¨čŞă§ĺŽçžŠăăăă˘ăăă使ç¨ăăćšćłăčŚăŚăăăžăďźăăăŚă大ĺ¤ć°ăŽăăă°ăŠăăźăŻäťăŽă˘ăăăĺż
čŚă¨ăăžăăďźăWriter
ďźăă°ă¨ăłăăŞăŽăäťăŽä˝ăăă§čĄ¨çžăăăŚăăďźăă˘ăă¤ăă¨ăŻä˝ăăăŞăă˘ăă¤ăăĺż
čŚăŞăŽăă誏ćăăćŁĺ˝ăŞççąăăăăžăăăăăŚăăăżă¤ăăŻăŠăšăă¨ĺźă°ăăăă1ă¤ăŽĺźˇĺăŞHaskellăĄăŤăăşă ăŤă¤ăăŚčŞŹćăăăă§ăŤăäźăăăăăĄăłăŻăżăźăĺżç¨ăăĄăłăŻăżăźăă˘ăăăăă˘ăă¤ăăăżă¤ăăŻăŠăšă¨ăŠăŽăăăŤçľăłäťăăŚăăăă誏ćăăŚă芹ăçľăăăžăăăžă äźăăŚăăžăăăăăăŚćĺžăŤăç§ăŻç´ćăćăăăé常ăŽă˘ăăă¨ăŻç°ăŞăI / Oă˘ăăăŤă¤ăăŚç°ĄĺăŤčŠąăăžăďźăă ăăĺŽčŁ
ăŽăżăç°ăŞăă使ç¨ä¸ăŻäťăŽă˘ăăă¨ĺăăăăç°Ąĺă§ăďźă