120901fp key

54
®Ðęm ´ő ŋ !04=?60 $,6,9: 6=69,. ŕÐmùP 49 ):6A: M SŎmÔÁ ¼Á« ĸğ

Upload: ksknac

Post on 12-Jun-2015

12.024 views

Category:

Documents


0 download

DESCRIPTION

函数プログラミングの集いで発表したスライド. 後半についての詳細を知りたい方には, Hudak らの A History of Haskell をお薦めします.

TRANSCRIPT

Page 1: 120901fp key

®Ðę�������m´ő��ŋ�

!04=?60�$,6,9:���6=69,.�ŕÐ�������mùP��� ��49�):6A:�� ���� �M�SŎmÔ�Á�¼Á«���ĸğ

Page 2: 120901fp key

�������Ŗŀ�Á¥À��ÐÁĨ�����(.?0.9�ou

�Áæ¥À��ÐÁHмäōĥĮ�*052:2��(><9<4��'$./9��'�.:9����¬Ųƈü¼���²ĕäċ®ü¼�Ń¹mïĀîü¼���ŻøŏƑƐü¼�

����¥À��мå×ÁĥĮ�'�.:9��)A/E�� .?8299�����ħÊð®ü¼���ƌőŔü¼

Ìún�Áì¶�

Ŕ

Page 3: 120901fp key

ĥČ�­�����mßïHûħńěùĸÜġ�Řĺ^hØÝÙ

®Ðę�������Ċėmz}�©�¥ ĠřųÁõĠř�©����

`mijF»��üóu���M��§jËó�©�¥�ª�ŢşŪÒj�£�¦ª�mgUhżŦpЫo�(><<3�*A::6@�i

Page 4: 120901fp key

お知らせ2012年9月1日

 これからお話しする内容は、あくまで一個人の主義・主張および見解であり、所属機関・所属団体を代表して発言するものではありません。「○○○をお辞めになってから批判してください」というのはお控えください。

Page 5: 120901fp key

�Ök¢z§kJ

Page 6: 120901fp key

Y{TxľŁ}Õ²[s]

Page 7: 120901fp key

®ÐęÙċ}

ñcfnPXjP

Page 8: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 9: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 10: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 11: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 12: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 13: 120901fp key

®ÐęÙċni{I

�,=6077

�70,9

%�,87

(.,7,

�7:5?<0

�:88:9�"4=;

Qƒ��±Éo©�mpJĝÅoĤÜŖo©�yËÚĚŵißÝ^hUt`

(>,9/,</�#"

(.3080

�<7,92

,@,

��

��� &A>3:9

'?-A

&0<7

Page 14: 120901fp key

®ÐęÙċmã÷nI®ÐUěh[fĝ_zI½Ŝ_xlUjËóŇ_xlUoL

ýʼnŊøÊUOz�Ŭó¼ëějXoĢŹźĜêpL

ĵè½UŇŗ��ĢZ{fPzIcwcwţąÝjpL

ęġümÄð}ØdIŇYĦUjËóŇ_xlUoL

Page 15: 120901fp key

お知らせ (2)2012年9月1日

 問題文にあった「関数型」は、「言語」に対する形容詞として適切ではありませんでした。従って、この問題につきましては全員正解 (3点) として扱います。

Page 16: 120901fp key

®ÐęÙċ}

ñcfnPXjP�

Page 17: 120901fp key

�®ÐęÙċ�hPQĴċ

®ÐęÙċ}

ñcfnPXjP�

Page 18: 120901fp key

`u`uK®ÐLhn

�����gPQ®ÐhnĶjzvoid inc (int* x) { ++*x; }

ēņhuPQĂ{l[hwO�¡e�¨PjpùUtb�

*¨Ą +��Tx�pm®ÐnFѲmÊĈ}Ĥa]�D�m«�ù����gOzGK¾fm�,�N���k£[FE�,�-��N���jz�-�N���U�dbXĠú]zL

Page 19: 120901fp key

®ÐHį®ÐmĒ��B ����C����B�����C�mhVôÏpËó����G�� �������������H����G�� ����� ����� �HôÏpŞËó����G�� ������������������H����G�� �������H��ɸËójUV�

Page 20: 120901fp key

®Ðni{I

int random(int p) { return (rand()%p);}

void putchar (int c); /* 標準出力へ 1 文字書き出す */

int getchar (void); /* 標準入力から 1 文字読み込む */

void inc (int* x) { ++*x; } /* x の指す値をインクリメント */

Page 21: 120901fp key

お知らせ (3)2012年9月1日

 「どれが関数か」という問題において、入力および出力の集合が明示されておりませんでした。従って、この問題につきましては全員正解 (各1点) として扱います。

Page 22: 120901fp key

®ÐTķTnù�êÓ�� �

��į®Ðk�Rz�������S�>.;1<:���� ��S�>.;1<:

¢°ù�}�í_o®Ðkjz�����=oʼn��ûėãoľĹ��oж�����DDD������S�>.;1<:�����EEE��� ��S�>.;1<:

int random(int p) { return (rand()%p);}

Page 23: 120901fp key

®ÐTķTnù�êÓ����

¡\�.�jx¡\âòjmg®ÐI����B<61��S�=A@05.>����B<61��S�=A@05.>

ÛõÄĐč}ëń]zhį®Ð�����ûėãoľĹ��oж����DDD��S�=A@05.>����EEE��S�=A@05.>

void putchar (int c); /* 標準出力へ 1 文字書き出す */

Page 24: 120901fp key

®ÐTķTnù�êÓ����

��į®Ðk�Rz�B<61������S�42@05.>�B<61������S�42@05.>

¢°ù�}�í_o®Ðkjz�����¿Í`}®KÂÄ��oж��DD�@�������S�42@05.>��DD�@��������S�42@05.>

int getchar (void); /* 標準入力から 1 文字読み込む */

Page 25: 120901fp key

®ÐTķTnù�êÓ����

¢°ù�U�49>��jx®Ð�D��B<61��S�6;0�D��B<61��S�6;0

�°mĐč}ëń]zhį®Ð������M�oĪı��oж

¢°uĐč}ëń]zh®Ð�����Doʼnj�M�oĪı��oж

void inc (int* x) { ++*x; } /* x の指す値をインクリメント */

Page 26: 120901fp key

®Ðºm¤µnŃÐ

ĴŌknį®Ð�B<61��������B<61�����S�42@05.>

¢°å×}Ýv[f®Ðº�����¿Í`}®KÂÄ��oж

�°å×}®Ðk[f®Ðº���¿Í`}®KÂÄX{ʼnroËó�oж .?8299o¢��oĈWÁr»Ō

int getchar (void); /* 標準入力から 1 文字読み込む */

Page 27: 120901fp key

ŐaÒ����,=6077ĵè½üĆ

20>�3,<�nĵè½UjP42@�5.>�cowopţąÝYĦUĠřÃoسňmţąÝYT}

20>�3,<�nĵè½UOz�5.>�Ňil[�!'��5.>�Ň�ĵ`

��

�.;<%<6�j� .?8299�5@@=���CCC�8:<;<?�;2@�C9<4����5@:9�-� ���� .?8299mpţąÝYĦUoX5@@=���1�5.@2;.�;2�7=�8.FA�E.:.:<@<������5@@=���1�5.@2;.�;2�7=�;</?A;�����

Page 28: 120901fp key

®ÐºmĊÈÍijm®ÐUį®ÐkjzS`{3���4�jUVě�ĈWzV4�oËóÙi¿ÍжYĠ�}

3�o°Íж�ĠW}ğçYT}��Xw�

3�YŞËóÙ`}ĥĐêYT}

đĞ}ëRf®Ðº]zqV��

Page 29: 120901fp key

®ÐęÙċIÙċU®ÐęI�©�¥ Çoko¹íZwËóL

¢�°mù�nIŇęZùĸl{c~YжLŇĦ^ùĸl{kVÅij`}oL

âĂmhY|¨ĄUď[PkoùĸiwÎ_}ùŀiķÐiZlU

Page 30: 120901fp key

gn®ÐęhnI���������~�pmĕîsj�kYËóiT}zVlăŒŞËóoŁōpiZ}Į|Û][

Ùċk®ôjW¹Ìþðñóyĵ|ʼn�Ŀ÷^hËóÙľĹroŁō��¡ª�iįĬƎ^ŅģyđZy`]pùĸmŰœ

��

Page 31: 120901fp key

dsyÙPaPYhnJ

��5@@=?���@C6@@2>�0<:�8?8;.0�?@.@A?����������� ���

Page 32: 120901fp key

dsyÙPaPYhnJ

��5@@=?���@C6@@2>�0<:�8?8;.0�?@.@A?����������� ���

5@@=?���@C6@@2>�0<:�8?8;.0�?@.@A?�������������

Page 33: 120901fp key

hnPQummJ

¹àk®ÐęÙċhÙQ�UÜPU[gXoĉŚđmwŮº3A;0@6<;.9�9.;4A.42�jUVŐĸw

��

5@@=?���@C6@@2>�0<:�0.:9<2/.�?@.@A?�����������������

Page 34: 120901fp key

œqiuœqiuăĘÆıºð^[pOIJņŝq°^åŠÙP

lzrO&A99PpO�§Plom

�ĪĔŨƍłoƁøſYO´śPåĄpƏvd{^U

��

Page 35: 120901fp key

�®ÐęÙċ�hPQĴċ

®ÐęÙċ}

ñcfnPXjP��

Page 36: 120901fp key

�®ÐęÙċ�hPQĴċ

®ÐęÙċ}

ñcfnPXjP��

®Ðę�������U[v]PhPQÈģÑÉg

Page 37: 120901fp key

Ò}ļ[fJ

®ÐºnÙċkwx^¹Ìþð

Page 38: 120901fp key

®Ðºkwzėò

Page 39: 120901fp key

®Ðºkwzėò

�5@@=���CCC�>21/A99�0<:�0?�*.@2996@2�2;-!&+�)21��A99��;2>4E��>6;8�� ���������

Page 40: 120901fp key

®Ðºkwzėò

�5@@=���CCC�>21/A99�0<:�0?�*.@2996@2�2;-!&+�)21��A99��;2>4E��>6;8�� ���������

Page 41: 120901fp key

®Ðºkwzėò

�5@@=���CCC�>21/A99�0<:�0?�*.@2996@2�2;-!&+�)21��A99��;2>4E��>6;8�� ���������

Page 42: 120901fp key

®Ðºkwzėò

�5@@=���CCC�>21/A99�0<:�0?�*.@2996@2�2;-!&+�)21��A99��;2>4E��>6;8�� ���������

Page 43: 120901fp key

®Ðºkwzėò�����m�±[mÞĩ¿°Í�M�oĨ~oƅŷYČŧko�M�YŁō�ò\}XYÐĖ

�����m�öHâ�UîĻ¢�¤M§Ùmz}ĩʸīďøÝmz}Ô»Ņģoõ¯

��

Page 44: 120901fp key

®Ðę�������m´ő

Page 45: 120901fp key

s^nÙċmŀĭTx �����=���Ûõ���mŏ �¤M¦ª���ª���¥ �ûė

���=���&"mĀĜjÎīãƃĸR��ª�¦R½ŗùĸ$!*(��"��%0�.>@5E��oŽ¼

���=����&"mŏ ĴŭK³ŭoŶąoŸƋlăŒß¿oèÞYÃo�(mŁō

Page 46: 120901fp key

λx.λy.xÁĎ©IJć

ÙċkSXz���ÛõmÚÇÊ!*,!%oŶąÆéŕġ���ƆĶãƃ

�(��$.;16;���� �âćÆéŕġ���ĽļÜġ

����*0<@@�.;1����*@>.052E�����¬[P�����Äą��Mª���j�©�¥ Ġř

�)���A>[email protected]�.;1�"���.>96;4@<;������*052:2�oũÆ��M�oĭ¿

����*A??:.;�.;1����*@2292������

(�("�mŏ ���������������+A>;2>�������

Page 47: 120901fp key

Γ ⊢e : τü¼ÁTx s{aÙċ"����������������������������*0<@@������$<460�<3��<:=A@./92��A;0@6<;?

"����#"����������������)��%69;2>������$<460�3<>��<:=A@./92��A;0@6<;?ÀöÆ·áĎÐ�×Æj^dĤÜŖ

&��������������������������(><@86;������(><4>.::6;4��<:=A@./92��A;0@6<;?ŇęZ¥ �ûė�Řĺ^dùĸ

��

Page 48: 120901fp key

FORTRAN&BNF

®Ð�������mŅİ�&����"��������������������.08A?��������ªě�©�¥�ª�X{űš

ØÝÆĒčX{ĔÝê���M§

�(�·ÕpĝmƂ^UùĸiplU

�.08A?�oĂýÓY¬ZlžŴ

��

Page 49: 120901fp key

ĿĬĦçm��ąËªmÏÐmĦçnÃÇ� �����>621:.;�.;1����,6?2������ĿĬĦçĚh`mÂé©Èģü� �(�� 2;12>?<;�.;1�"��%<>>6?������

(�("�mĦçÅłmûĹh�!'�� ����+A>;2>����������

���ň¿kãeW¹ĺ� ����+A>;2>������ā������ ���A>>E�.;1�)���2E?������

��

Page 50: 120901fp key

®Ðęk®]z�à�¸ ������ =>�"4=;�.:910<09.0Ƈ­Ôť

�� ��� =>��&���A;0@6<;.9�(><4>.::6;4�$.;4A.42� .;1��<:=A@2>��>056@20@A>2Ƈ­Ôť

¦k�ÿ[f����&�hjz��

Page 51: 120901fp key

®Ðę���mŒĖ�mÙċmĽ¯ĻŋYē»iT}Ďū¾_Ļŋµiwůóoùĸ�Ćÿ

ĿĬĦçbXguÜÐ*�*$�R�#)��R�%6>.;1.��+A>;2>��� $.FE�%$���A4A?@??<;�.;1�"<5;??<;��� '>C299��,.192>����9I�� A1.8��� !1���>B6;1����92.;��(9.?:2672>��� (<;12>���.6>/.6>;����.6?E�� .99������

Page 52: 120901fp key

�,=6077�mŏ ÜWmÙċ}ā�]zatk·��(�������iæmÖġÖġmÖġ�únhŎŊ�ĖÌæĨefd+A>;2>o%6>.;1.�İì

á§n��,=6077��?<<A�Txþ¶Èûėoƀ���¥�ŸÞjËÚ��A>>Eml}paefdYN

Page 53: 120901fp key

sht®Ðęm¨Ą}ĉ³[aduyóàÆléŕiËóXŤXYúçùĸil[ăŒmÀ`}ńČƉ

®Ðę�������m´ősj�kOƄPoöi`utb�OÑPoöpZfjƊXYö`pa

Page 54: 120901fp key

������������������� ����������������