��2��@�֐��̘b�����悤

�R�� �L�v
������Ѓ^�C���C���^�[���f�B�A

2008/11/28

�֐��^����ɕ��ނ����Haskell�BC����Ȃǂ̎葱���^����Ƃ܂������قȂ�v���O���~���O�̐��E�ɓ��ݏo���Ă݂悤�i�ҏW���j

�@Haskell�͊֐��v���O���~���O�̂��߂̌��ꂾ�Ƃ����̂�����A�֐����o�Ă��Ȃ��Ă͘b�ɂȂ�Ȃ��B����́A�֐��̘b�����悤�B

 

 

 

 

 

 

�֐����ۂƊ֐��K�p

�@�O��A�b�����W���̏d�l���v�Z����p�^�[���́A

�i�q�g���l�r ^ 2 �j*�q�W��BMI�r

�ł���B�q�W��BMI�r�͌Œ肳�ꂽ�l�i22.0�j������A�W���̏d�l�́q�g���l�r���ς��΂���ɉ����ĕω�����B�W���̏d�l�̌v�Z�́A

�i�q�H�r ^ 2 �j*�q�W��BMI�r

�́q�H�r�̕�������̓I�Ȑg���̒l�Łu�u�������v�Ă��΂����Ƃ������ƂɂȂ�B�q�H�r�����̌��̂悤�Ȃ��̂��ƍl����΁A�����֒l���͂ߍ��߂΂悢�킯�ł���B

�@���̌v�Z�p�^�[�����A

�Ɂq����\���ϐ��r���i�q����\���ϐ��r^ 2 �j*�q�W��BMI�r

�̂悤�ɏ������Ƃ�����B����������ʉ�����ƁA

�Ɂq�ϐ��r���q�v�Z���{�́r

�ƂȂ�B

�@���̂悤�ȕ\���̂��Ƃ��֐��������邢���ɒ����Ƃ����B�ɂׂ̗ɂ��錊��\���ϐ��̂��Ƃ������ϐ����邢���������Ƃ����B�܂��A���̉E���̎��̂��Ƃ��֐����ۂ̖{���Ƃ����BHaskell�ł͊֐����ۂ͈ȉ��̂悤�ɕ\���B

\ h -> (h ^ 2) * stdBMI

�@���ۂ̕W���̏d�l�́A��̃ɒ��ۂ̉����������ۂ̐g���l�ɑ������������Ŗ{�̂̎���]�����邱�Ƃœ�����B���̂悤�ȑ���̂��Ƃ��֐��K�p�ƌĂԁB�֐��K�p�͎��̂悤�ɁA�ɒ��ێ��̉E���Ɏ��ۂ̐g���l��\�����������B

*BMI> (\ h -> (h ^ 2) * stdBMI) 1.75
67.375

�@\�̓ɂ�\���A->�́���\���Ă���B�֐����ۂ���̓I�Ȓl�i��\�����j�ɓK�p����Ƃ��ɂ́A���ʂ�p���Ăǂ��܂ł��A�֐����ۂł��邩�������K�v������BHaskell�ł͊֐����ۂ����ł���A���ꎩ�g���l�ł���B�֐����ۂ��������ɓK�p�������ʂ̒l��\������Ƃ��Aghci�͈ȉ��̂悤�Ȍv�Z���s���Ă���B

  1. �֐����ۂ̑����ϐ����������̒l�i��\�����j�ɑ�������
  2. �O���̑�����lj������‹��Ŋ֐����ۂ̖{�̂�]������
  3. �֐��K�p��O���̕]�����ʂŒu��������

�@��̗�ł́A

  1. (\ h -> (h ^ 2) * stdBMI) 1.75
  2. (1.75 ^ 2) * stdBMI
  3. 3.0625 * stdBMI
  4. 3.0625 * 22.0
  5. 67.375

�Ƃ�����Ɍv�Z���i�ށB����ɏڂ�����������ƈȉ��̂悤�ɂȂ�B

1. h = 1.75�Ƃ������������B

2. �{��(h ^ 2) * stdBMI��]������B

�@2.1 �q���r*�q���r�̒l��*�̍��E�����̒l�����߂Ă����Z���s���B
�@2.2 ���Z�q*�̍����̎���h ^ 2�ł���B

�@�@2.2.1�q���r^�q���r�̒l�����l��^�̍��E�����̒l�����߂Ă���ׂ���Z���s���B
�@�@2.2.2 h��1.75�Ȃ̂ŁAh ^ 2��h��1.75�ɒu��������1.75 ^ 2�Ƃ���B
�@�@2.2.3 ��1.75 ^ 2�̒l��3.0625�Ȃ̂ŁA�����3.0625�Œu��������B

�@2.3 ���Z�q*�̉E���̎���stdBMI�ł���B
�@2.4 �ϐ�stdBMI�͒l22.0�ɑ�������Ă���iBMI.hs��6�s�ځj�A
�@�@�@ ��stdBMI�̒l��22.0�ł���̂ŁA�����22.0�ɒu��������B
�@2.5 �{��(h ^ 2) * stdBMI��3.0625 * 22.0�ł��邱�Ƃ𓾂�B
�@2.6 ��3.0625 * 22.0�̒l��67.375�ł��邩��A���ǁAh��1.75�ő�������
�@�@�@�‹��ł̖{�̂̒l��67.375�ƂȂ�B

3. �֐��K�p(\ h -> (h ^ 2) * stdBMI) 1.75��67.375�Œu��������B

�@�X�N���v�g�͈ȉ��̂悤�ɏ����B

$ cat -n BMI.hs
    1  module BMI where
    2
    3  type BMI =    Double
    4
    5  stdBMI :: BMI
    6  stdBMI =  22.0
    7
    8  type Height = Double
    9  type Weight = Double
   10
   11  stdWeight' :: Height -> Weight
   12  stdWeight' = \ h -> (h ^ 2) * stdBMI
    ...

�@11�A12�s�ڂ͕ʂ̌`���Œ�`���Ă��悢�B

$ cat -n BMI.hs
    ...
   14  stdWeight :: Height -> Weight
   15  stdWeight    h      =  (h ^ 2) * stdBMI
   16
    ...

�@���̌`�����֐������Ƃ����B���ӂ��֐��K�p�̌`�ɂȂ��Ă��āA�E�ӂ͊֐����ۂ̖{�̂Ɠ����`�ɂȂ��Ă���B�ʏ킱�̊֐������Ƃ����`���Œ�`����̂�������₷���B�^�V�O�l�`���Ɍ����->�͊֐���\���Ă���BHeight -> Weight �́uHeight �^�̒l����Weight�^�̒l�ւ̊֐��v�̌^��\���B

�@���ۂɎg���āA�g��180�Z���`���[�g���̐l�̕W���̏d�����߂�B�֐�stdWeight�́A

*BMI> stdWeight 1.80
71.28

�ƂȂ�B

�@�֐��K�p��2�•��񂾎��ŕ\���A1�–ڂ̎����֐��̒l�������A2�–ڂ̎��������̒l�ł���B180�Z���`���[�g���������g����5�Z���`���[�g���L�т��l�̕W���̏d�̌v�Z�Ȃ�A�ȉ��̂悤�ɏ������Ƃ��ł���B

*BMI> stdWeight (1.80 + 0.05)
75.295

�@(1.80 + 0.05)�̊��ʂ́A���ꂪ1�‚̎��ł��邱�Ƃ������Ă���B���̊��ʂ��Ȃ��ƈӖ����ς���Ă��܂��̂Œ��ӂ��邱�ƁB

*BMI> stdWeight 1.80 + 0.05
71.33

�@stdWeight 1.80 + 0.05�Ƃ������́AHaskell�̏����n�ł́A(stdWeight 1.80) + 0.05�Ɖ��߂����B����͊֐��K�p�̍ۂ̊֐��ƈ����̌����͂�+���Z�q������������ł���BHaskell�ł͊֐��K�p�͂����Ȃ钆�u���Z�q���������͂������̂ł���B

�y�A�i2�‘g�j

�@���̐l�̐g���Ƒ̏d����ABMI�iBody Mass Index�j�̒l���v�Z���Ă��̐l�̔얞�x�̖ڈ��ɂ��邱�Ƃ�����B�qBMI�r�̌v�Z�́A

�q�̏d�̒l�r���i�q�g���̒l�r^ 2�j

�ł���B�����Łq�̏d�̒l�r�̓L���O�����P�ʁA�q�g���̒l�r�̓��[�g���P�ʂł̒l�ł���BBMI�l��2�‚̃p�����[�^�q�̏d�̒l�r�Ɓq�g���̒l�r�Ɉˑ�����B2�‚̃p�����[�^��1�‚ɂ܂Ƃ߂�ɂ́A�^�v�����g���B

$ cat -n BMI.hs
    ...
   17  bmi :: (Height, Weight) -> BMI
   18  bmi    (h,w)            =  w / (h ^ 2)
   19
    ...

�@�^�V�O�l�`���́A(Height,Weight)�^�̒l����ABMI�^�̒l�ւ̊֐��ƓǂށB(Height, Weight)��Height�^�̒l��Weight�^�̒l��1�‚ɂ܂Ƃ߂��^�ł���B����2�‚̌^��1�‚ɂ܂Ƃ߂��^���y�A�^���邢��2�‘g�^�Ƃ����B�y�A�^��2�‚̌^��,�ŋ�؂�A�ۊ��ʂł������ĕ\���B�܂��y�A�^�̒l�����l�ɁA2�‚̒l��,�ŋ�؂�A�ۊ��ʂł������ĕ\���B

�@�ȉ��͎��ۂ̌v�Z��ł���B

*BMI> bmi (1.71,79.5)
27.18785267261722
*BMI> bmi (1.59,73.0)
28.875440053795337

 
1/2

Index
�֐��̘b�����悤
Page1
�֐����ۂƊ֐��K�p
�y�A�i2�‘g�j
  Page2
�J���[��
�֐��̌^�V�O�l�`��

�̂�т�Haskell

�@Coding Edge�����ߋL��
���܂���A���S���Y�����w�ԈӖ�
�R�[�f�B���O�ɖ𗧂I �A���S���Y���̊�{�i1�j
�@�R���s���[�^�Ɂu3�̔{����3�̕t�������v�𔻒f������ɂ͂ǂ������炢�����B���z�͂�b���悤
Zope 3�̖��͂ɔ���
Zope 3�Ƃ͉�����H�i1�j
�@Python�ŏ����ꂽWeb�A�v���P�[�V�����t���[�����[�N�uZope 3�v�B�ق��̃\�t�g�E�F�A�Ƃ͈�̉�������Ă���̂��H
�n��‹��v���O���~���O�̃X�X��
�ēc �~�̃R�[�f�B���O�V��
�@�����\��IT�@��Ɉ͂܂ꂽ�‹��ŃR���s���[�^�̓��쌴���ɐG��邱�Ƃ͉”\���낤���B�n���PC��Ƀr�b�g�}�b�v�̒������ǂ�����Ĉ����H
Haskell�v���O���~���O�̊y���ݕ�
�̂�т�Haskell�i1�j
�@�֐��^����ɕ��ނ����Haskell�BC����Ȃǂ̎葱���^����Ƃ܂������قȂ�v���O���~���O�̐��E�ɓ��ݏo���Ă݂悤
������ƕς����Lisp����
Gauche���^�v���O���~���O�i1�j
�@Lisp�̈��ł���Scheme�B�����‚����鏈���n�̒��ł��C�y�ɃX�N���v�g��������Gauche��Lisp�̐��E��̌����Ă݂悤
�@�@Coding Edge�t�H�[�����t�B�[�h�@ 2.0�^1.0�^0.91


Coding Edge �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

>

Coding Edge �L�������L���O

�{�� ����