��l�̂��߂̃u���b�N�{�b�N�X�lj��u���\�\�N���[�W���ƃI�u�W�F�N�g�̔����Ȋ֌W�i����2�j�F�v���O���~���O����̐i����ǂ��i1/3 �y�[�W�j

�O��Ɉ��������AScheme����̏����n�AGauche���J�����Ă���썇�j�N�����A�N���[�W���̋@�\�����؂��A�֐��^����ƃI�u�W�F�N�g�w������̊֌W�ɂ‚��ĉ�����Ă����܂��B����́A�N���[�W���ƃI�u�W�F�N�g�̂��[����T�����܂��B

» 2007�N03��30�� 12��00�� ���J
[�썇�j�N�CITmedia]

���ۉ��c�[���Ƃ��ẴN���[�W��

�@C++�I�ȃI�u�W�F�N�g�̐��E�ł́A�I�u�W�F�N�g�̎��̂Ƃ́u�ЂƂ����܂�̍\���̂Ƃ��ă�������ɒu���ꂽ�C���X�^���X�ϐ��̒l�v�ɂ����܂���B�I�u�W�F�N�g�̃|�C���^�����΁A����͎�����A���̍\���̂ւ̃|�C���^�������Ă��邱�ƂɂȂ�܂��B�N���[�W�����u�֐��v���S�Ō��Ă���ƁA���̎��̂́u�I�u�W�F�N�g�v�̎��̂Ƃَ͈��Ȃ��̂̂悤�Ɏv����ł��傤�B

�@�m���ɃN���[�W���̃i�C�[�u�ȁu�����v�́A�֐��|�C���^�Ɗ‹��ւ̃|�C���^�������‚������̂ł��B�������A�N���[�W�������̂悤�Ɏ�������u�K�v�v�͂���܂���B

�N���[�W���̎����헪

�@C++�I�I�u�W�F�N�g�́A���̗��j�I�������i�[�I�Ɍ�����C����Ƃ̌݊����m�ہj�̂䂦�ɁA�C���X�^���X�ϐ�����������ɂЂƂ����܂�ő��݂��A�܂����̎������I�u�W�F�N�g���g�̎����ƈ�v����K�v������܂��B���Ƃ����̃C���X�^���X�ϐ����A�ق�̈ꕔ�̃��\�b�h���炵���G����Ă��Ȃ��Ă��A���邢�͈ꎞ�I�ɂ����g���Ȃ��Ă��A�ł��BC++�̊�ɂȂ���C�̍\���̂��A���ۓI�ȕ����^��\�����邾���łȂ��A��������̃��C�A�E�g�̎w��ɂ��g���Ă������c�ƌ����܂��B

�@����ɑ΂��N���[�W���́A���̒�����Q�Ƃ��Ă���ϐ����ǂ��ɑ��݂��Ă��\���܂���i�N���[�W�����g�������Ă���ԁA�{�̂��猩����������΁j�B�Ⴆ�΁A��������ɕύX����Ȃ��ƕ������Ă��郍�[�J���ϐ��́A���̏������l���N���[�W�����ɃR�s�[���邱�Ƃŏ����”\�ł��Bmap�ɓn���N���[�W���̂悤�ɁA�������Ԃ����[�J���‹����Z�����Ƃ��͂����肵�Ă���ꍇ�́A���[�J���X�^�b�N�ɒu�����Ƃ��ł��܂��B�����ĉ����A�N���[�W�����g��������ÓI�Ɂi�‚܂�A����ǂݍ���œ����c���[�ɓW�J�������_�Łj���ׂĔ������Ă���ꍇ�́A�{�̂��C�����C���W�J���Ă��܂����ƂŃN���[�W�����̂��̂̑��݂��������邱�Ƃ����”\�Ȃ̂ł��B

���i�Ƃ��ẴN���[�W��

�@�����N���[�W���̍œK���헪�́A�֐��^���ꂩ���킢�ł�20�`30�N�قǑO�ɐ���Ɍ������ꂽ���ƂŁA���܂ł͈Öق̗����ƂȂ��Ă��܂��B���̂��߁A�֐��^����̃v���O���}�[�̓N���[�W���������Ƃ��ɁA�I�u�W�F�N�g���u����Ă���v�Ƃ������o�i�Ⴆ��C��malloc��AC++/Java��new���ĂԂ悤�Ȋ��o�j���قƂ�ǎ����܂���B���ʂƂ��āu�����v���A���P�[�g����Ă��܂����Ƃ͂���܂����A����́i1�j�ǂ�����Ă��������Ȃ��A���P�[�V�������A�������́i2�j�R���p�C������𔲂��Ă��邩�A�̂����ꂩ�Ȃ̂ŁA�C�ɂ��Ă��d�����Ȃ�*�̂ł��B

�@�֐��^����̃v���O���}�[�ɂƂ��ẮA�N���[�W���Ƃ͂ނ���u���̋󂢂��R�[�h�̃u���b�N�v�ł��B���͉������ł���A�p�r�ɉ����Ď��ۂ̒l�𖄂ߍ��ތ��ł��B�R�[�h�Ɏ����悤�ȃp�^�[�������‚���ƁA�ω����镔�������ɂ��āA���ʕ������֐��Ƃ��Ă�����o���܂��B�����ĕω����镔�����A�������Ƃ��ė^���Ă��̂ł��B

�@��������Ă݂܂��傤�B�^����ꂽ���̏W��numbers�����ׂđ������l��Ԃ��֐�sum-of-numbers�́A���X�g1�̂悤�ɏ����܂��B����A�^����ꂽ���̏W������A���鐔�l���傫�����̂�����I�Ԋ֐�more-than�́A���X�g2�̂悤�ɏ����܂�*�B

(define (sum-of-numbers numbers)

  (define (loop sum nums)

    (if (null? nums)

      sum

      (loop (+ (car nums) sum) (cdr nums))))

  (loop 0 numbers))


���X�g1�@�^����ꂽ���̏W��numbers�����ׂđ������l��Ԃ��֐�sum-of-numbers

(define (more-than n numbers)

  (define (loop out nums)

    (if (null? nums)

      out

      (loop (if (> (car nums) n)

              (cons (car nums) out)

              out)

            (cdr nums))))

  (loop '() numbers))


���X�g2�@ �^����ꂽ���̏W������A���鐔�l���傫�����̂�����I�Ԋ֐�more-than

�@���̂悤�ɁA���[�J���֐�loop�ōċA����͔̂��ɂ悭����p�^�[���ł��B���҂�����ׂ�ƁA���X�g3�̂悤�ȋ��ʍ\��������ƕ�����܂��B�{�̓��ŕω����镔���́A<�����l>��<�o�߂Ɓicar nums�j���g������>�̕����݂̂ł��B���������Ƃ��Ĉ����œn�����Ƃɂ���΁A���ʍ\�����֐��Ƃ��Ă�����o�����Ƃ��ł��܂��i���X�g4�j�B

(define (���O numbers)

  (define (loop �o�� nums)

    (if (null? nums)

      �o��

      (loop <�o�߂�(car nums)���g������>

            (cdr nums))))

  (loop <�����l> numbers))


���X�g3�@sum-of-numbers��more-than�̋��ʍ\��

(define (fold proc seed lis)

  (define (loop seed lis)

    (if (null? lis)

      seed

      (loop (proc seed (car lis)) (cdr lis))))

  (loop seed lis))


���X�g4�@ sum-of-numbers��more-than�̋��ʍ\�����֐��Ƃ��Ă�����o�������ifold

�@���̕��ifold�ɁA�ω����镔�����O����^���Ă�邱�ƂŁA����sum-of-numbers��more-than���č\���ł��܂�*�i���X�g5�j�B����͂ق�̈��ɉ߂��܂���B���l�ɂ��āA�N���[�W���Ƃ͂�������Ŏ����u���i���v���Ă䂭��i�Ȃ̂ł��B

(define (sum-of-numbers numbers)

  (fold (lambda (sum elt) (+ sum elt)) 0 numbers))


(define (more-than n numbers)

  (fold (lambda (out elt)

          (if (> elt n) (cons elt out) out))

        '() numbers))


���X�g5�@�č\������sum-of-numbers��more-than

�@���������A��{�I�ȕ��i���̎�i�ł��郍�[�J���ϐ��Ƃ����T�O���̂��AScheme�̌���d�l�̓N���[�W����p���Ē�`���Ă��܂��B���[�J���ϐ�x�Ay�𓱓��������X�g6�̎��́A��`��Ax�Ay���������Ƃ���N���[�W��������Ē����ɏ����l10�A20���������Ƃ��ČĂяo���Ă���̂Ɠ����Ƃ���Ă��܂��i���X�g7�j�B

(let ((x 10)  �� �ϐ�x��10�𑩔��ix���`�j

      (y 20)) �� �ϐ�y��20�𑩔��iy���`�j

  (sqrt (+ (* x x) (* y y))))


���X�g6�@���[�J���ϐ�x�Ay���`���鎮�ilet�Ƃ����\���j

((lambda (x y) (sqrt (+ (* x x) (* y y))))

  10 20)


���X�g7�@let�\���̒�`�ɂ��A���X�g6�̃v���O�����́u�Ӗ��v

�@�������A������Scheme�����n��let�\�����������邽�߂ɃN���[�W���̎��̂��A���P�[�g������͂��܂���i���������������Ȃ邽�߂ł��j�B�������A���̂悤�ɃN���[�W���������`���s���Ă����΁A�N���[�W���œK���̃A���S���Y������l�ɓK�p�ł��܂��B

�@�N���[�W���ɂ��I�u�W�F�N�g�̎��������l�ł��B�v���O�����̎��ʒʂ�ɃN���[�W���̎��̂����������K�v�͂���܂���B�u�N���[�W���ɂ���āi�I�u�W�F�N�g�Ȃǂ��j��`����΁A��ʓI�ȈӖ���͂�K�p�ł���悤�ɂȂ�v�Ƃ����������A�֐��^�̃A�v���[�`����͋ɂ߂ėL�p�Ȃ̂ł��B

�@�@�@�@�@�@ 1|2|3 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; e_dlv.innerHTML = html; adRequest({position:dlv_pos,dom:true}); }else if(ad_type === 'gam'){ var html = '
'; e_dlv.innerHTML = html; refreshGam('InArtSpecialLink'); }else if(ad_type === 'logly'){ var html = '
'; e_dlv.innerHTML = html; loglySet(g_id); }else if(ad_type === 'google'){ var html = '
'; e_dlv.innerHTML = html; googletag.cmd.push(function(){ var slot8 = googletag.defineSlot('/43042345/nlab_artinsert_RT',[[336,280],[300,250],'fluid'],'div-gpt-ad-1551176482959-0').addService(googletag.pubads()); googletag.pubads().enableSingleRequest(); googletag.enableServices(); googletag.display('div-gpt-ad-1551176482959-0'); googletag.pubads().refresh([slot8]); }); } }; var insert_ok = function(_target,_str){ var clearfix = d.createElement('div'); clearfix.className = 'colBoxClear'; if(ad_float_fix){ e_body.insertBefore(e_dlv,_target); e_body.insertBefore(clearfix,_target.nextElementSibling); }else{ e_body.insertBefore(e_dlv,_target); } set_dlv(); }; var insert_ng = function(_str){ e_dlv.style.display = 'none'; }; var main = function(){ var e_nodes = e_body.childNodes; // BODY �����q�v�f var e_tags = []; // BODY �����^�O var p_num = []; // BODY ���� P �^�O�ʒu var p_target_num; // �g�}����ʒu var o_float = {}; // ��荞�ݗv�f var o_this = {}; // �A�N�e�B�u�^�O var o_next = {}; // �A�N�e�B�u�^�O�̎��̃^�O var flag_insert = 0; // �}���t���O // ��荞�ݗv�f�`�F�b�N var check_float = function(_e){ var e = 0; if(_e.id.match(/^col\d{3}(l|r)$/)){ e = _e; } return e; }; // �v�f�� Y ���W�ƍ����̍��v�l var get_element_y = function(_e){ var ey = 0; var eh = _e.offsetHeight; while(_e){ ey += _e.offsetTop; _e = _e.offsetParent; } return ey + eh; }; var check_ptag = function(_e){ var e = 0; if(_e.tagName && _e.tagName === 'P'){ e = _e; } return e; }; var try_insert = function(){ p_target_num = Math.floor(p_num.length / 2) - 1; if(p_target_num >= _maxrange) p_target_num = _maxrange; if(dis_con) p_target_num = 0; for(var i = p_num[p_target_num]; i < e_tags.length; i++){ o_this.e = check_ptag(e_tags[i]); if(o_this.e){ o_next.e = check_ptag(e_tags[i + 1]); if(o_next.e){ if(!o_float.e || check_float(e_tags[i - 1])){ o_float.e = check_float(e_tags[i - 1]); o_float.n = i - 1; } if(o_float.e && o_float.n < i + 1){ o_float.y = get_element_y(o_float.e); o_this.y = get_element_y(o_this.e); set_line(o_float.y,'red'); set_line(o_this.y,'blue'); if(o_float.y < o_this.y){ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂���'); break; } }else{ flag_insert = 1; insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂Ȃ�'); break; } } }else{ o_float = {}; } } if(!flag_insert){ insert_ng('�}���ʒu�Ȃ�'); } }; // �S�q�v�f����^�O�̂ݔz��ɓ���� for(var i = 0; i < e_nodes.length; i++){ if(e_nodes[i].tagName){ e_tags.push(e_nodes[i]); } } // �S�^�O���� P �^�O�ʒu��z��ɓ���� for(var i = 0; i < e_tags.length; i++){ if(e_tags[i].tagName === 'P') p_num.push(i); // �ŏ��̉�荞�ݗv�f���i�[ if(!o_float.e){ o_float.e = check_float(e_tags[i]); o_float.y = get_element_y(o_float.e); o_float.n = i; } } if(p_num.length >= _threshold){ try_insert(); }else{ insert_ng('P �^�O ' + _threshold + ' �ȉ�'); } }; if(e_body){ main(); }else{ insert_ng('�L���{���Ȃ�'); } })(document,4,5);

���ڂ̃e�[�}

���Ȃ��ɂ������߂̋L��PR