| Perl6 :: Currying Perl6 :: CurreingÀº Perl 5¿¡ ´ëÇÑ Perl 6 ¼ºê ·çƾ Ä«·¹ÀÔ´Ï´Ù. |
Áö±Ý ´Ù¿î·Îµå |
Perl6 :: Currying ¼øÀ§ ¹× ¿ä¾à
- ƯÇã:
- Perl Artistic License
- °Ô½ÃÀÚ À̸§:
- Damian Conway
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://search.cpan.org/~dconway/
Perl6 :: Currying ű×
Perl6 :: Currying ¼³¸í
Perl6 :: CurreingÀº Perl 5¿¡ ´ëÇÑ Perl 6 ¼ºê ·çƾ Ä«·¹ÀÔ´Ï´Ù. Perl6 :: CurryingÀº Perl 6 ¼ºê ·çƾ Ä«·¹ (Perl) 5.Synopsis Perl6 :: CurreingÀ» »ç¿ëÇÕ´Ï´Ù. ÇÏÀ§ Ãß°¡ ($ a, $ b) {$ a + $ b} # named params Àμâ Ãß°¡ (1,2)·Î ÇÏÀ§¸¦ Á¤ÀÇÇϽʽÿÀ. # ³» $ incr = add.prebind (a => 1) È£Ãâ; # $ a Àμö¸¦ 1 #¿¡ ¹ÙÀεùÇÏ¿© ÁõºÐ ¼ºê ·çƾ Àμâ $ incr -> (3), "n"À» ¸¸µì´Ï´Ù. # verseThe Perl6 :: Currying ¸ðµâÀ» »ç¿ëÇÏ¸é »õ·Î¿î Perl 6 ¸í½Ã Àû °íÂ÷¿ø ±â´É ±¸¹®À» ½Ãµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Perl 5.in Perl 6 ¸ðµç ¼ºê ·çƾÀº "ºÎºÐÀûÀ¸·Î ¹ÙÀεù"µÉ ¼ö ÀÖ½À´Ï´Ù. Áï, Àμö Áß ÀϺθ¦ Á¦°ø ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·Î ÀÎÇØ ÀÚµ¿À¸·Î Á¦°øµÇ´Â Àμö·Î ¿øº»À» È£ÃâÇÏ´Â ´Ù¸¥ ¼ºê ·çƾÀ» »ý¼º ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼µå È£ÃâÀº ¿ø·¡ ¼ºê ·çƾÀ» È£ÃâÇÏ´Â »õ ¼ºê ·çƾ¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÏ°í ±× Àμö¿¡ ÇÁ·¹¹Ù¿îµå Àμö¸¦ ³ª¿ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù. # Perl 6 Code Sub ³ª´©±â ($ Numerator, $ Denominator) {$ NUMERATOR / $ ºÐ¸ð¸¦ ¹ÝȯÇÕ´Ï´Ù. } ³ªÀÇ $ halve = divited.prebind (dnominator => 2); ¸Þ¼Òµå ÄÚµå :: ÇÁ¸®¹ÙÀÎÀÌ µç °´Ã¼ °³Ã¼¿¡ ºÒ·Á °¡¾ß ÇÔÀ» ³ªÅ¸³»´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. ³ª´©´Â °ÍÀ¸·Î ¹Ýȯ µÈ ¸ðµç ¹°Ã¼. ÈÄÀÚ¸¦ ¾òÀ¸·Á¸é ´ÙÀ½À» ¾µ °ÍÀÔ´Ï´Ù. divide (). Prebind (...) ¶Ç´Â : Divide.Prebind (...)´Â ÀÌÁ¦ $ halve·Î ¾ð±Þ µÈ ¼ºê ·çƾÀ» È£ÃâÇÏ´Â ÀÌÁ¦ SubRoutineÀ» È£ÃâÇÏ´Â °ÍÀÔ´Ï´Ù. 2. Perl 6 ÄÚµå Àμ⠳ª´©±â (42,2); # ÀüÈ ³ª´©±â ... Àμâ 21 $ halve (42); # ÅëÈ ³ª´©±â ... Àμâ 21 ÇÑ ¹ø¿¡ ¸ðµÎ ¼ºê ·çƾÀÇ ¸ðµç Àμö¸¦ »çÀü ¹Ð¾î ³ÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. # Perl 6 ÄÚµå My $ PI_PAPROX = DIVIDE.PREBIND (numerator => 22, dnominator => 7); $ pi_approx ()¸¦ ÀμâÇϽʽÿÀ. # 3.142857142857142857142857142857142 ´Ü°è : # Perl 6 ÄÚµå My $ pi_legislated = $ halve.prebind (numerator => 6); $ pi_legislated () Àμâ #ÀÌ ±¸¹®ÀÌ Äڵ带 »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î ÄÚµå :: PreBind.You´Â Perl 6 ¾Ù¸®¾î½Ì ¿¬»êÀÚ (: =)¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î $ halve°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¹Ç·Î ¿ì¸®´Â $ halve°¡ ÇÊ¿äÇÏÁö ¾ÊÀº 3 °³¸¦ ÀμâÇÕ´Ï´Ù. ±âÁ¸ ÆÄÀÏÀ» ºÎºÐÀûÀ¸·Î ¹ÙÀεùÇÏ¿© »õ À̸§ ÁöÁ¤µÈ ¼ºê ·çƾÀ» ¸¸µé·Á¸é. ¿¹ : # Perl 6 Code RegrooCal : = Divide.Prebind (numerator => 1); Àμ⠻óÈ£ (10) # Perl 5¿¡¼ 0.1Parameter ¹ÙÀεùÀ» ÀμâÇÕ´Ï´Ù. Perl6 :: Currying ModuleÀº Perl 5¿¡¼ µ¿ÀÏÇÑ ±¸¹®À» »ç¿ëÇÒ ¼öÀÖ°Ô ÇØÁÝ´Ï´Ù. ¿ø·¡ÀÇ Àμö·Î ÀÚµ¿ °ø±ÞµÇ´Â ´Ù¸¥ ¼ºê ·çƾÀ» ¸¸µì´Ï´Ù. »õ ¼ºê ·çƾÀº ¿ø·¡ ¼ºê ·çƾ¿¡¼ PreBind ¸Þ¼µå¸¦ È£ÃâÇÏ¿© »ý¼ºµË´Ï´Ù. ¿¹ : # Perl 5 ÄÚµå Perl6 :: Curreing; ÇÏÀ§ ºÐÇÒ ($ Numerator, $ Denominator) {$ NUMERATOR / $ ºÐ¸ð¸¦ ¹ÝȯÇÕ´Ï´Ù. } ³ªÀÇ $ halve = divited.prebind (dnominator => 2); À§ÀÇ ¿¹ : À§ÀÇ ¿¹Á¦¿¡¼´Â, Perl6 :: CurreingÀº ¸í¸í µÈ ¸Å°³ º¯¼ö·Î Perl 5 ¼ºê ·çƾÀ» ¼±¾ðÇÏ´Â (Á¦ÇÑÀû) ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ÇöÀçÀÌ ¸Å°³ º¯¼ö´Â À§¿¡ Ç¥½ÃµÈ´ë·Î ½°Ç¥·Î ±¸ºÐ µÈ ½ºÄ®¶ó ¸ñ·ÏÀ̾î¾ßÇÕ´Ï´Ù. °¢ ¸Å°³ º¯¼ö´Â ¼ºê ·çƾ º»¹® ³»ÀÇ ¾îÈÖ ½ºÄ®¶ó º¯¼ö°¡µË´Ï´Ù. ¼ø¹æÇâ ȣȯ¼º, Perl 5ÀÇ Perl Ful 6 ¸Þ¼Òµå È£Ãâ ±¸¹® ($ objref.methodname (...))ÀÌ »ç¿ëµÇ´Â Perl 6 ¸Þ¼µå È£Ãâ ±¸¹® ($ objref.methodname (... $ objref.methodname (...))ÀÌ »ç¿ëµË´Ï´Ù. ±¸¹® ($ objref-> ¸Þ¼Òµå À̸§ À̸§ À̸§). Perl 6°ú ÀÏÄ¡ÇÏ´Â °ÍÀº ¿©ÀüÈ÷ ÇØ´ç ¸Þ¼Òµå°¡ ÄÚµå :: ÇÁ¸®¹ÙÀÎÀÌ ¾Æ´Ï¶ó °´Ã¼ÀÇ prebind°¡ ¾Æ´Ñ ÄÚµå :: Prebind ÀÎ °ÍÀ» ³ªÅ¸³À´Ï´Ù. ºÐ¸®¸¦ ºÎ¸£¸é, ¿ì¸®°¡ ºÐ¸ð¸¦ ¿¹¸®ÇÑ °ÍÀ¸·Î, ÀÌÁ¦ $ halve·Î ¾ð±Þ µÈ ¼ºê ·çƾÀ» È£ÃâÇϸé È¿°ú´Â ÀÚµ¿À¸·Î Á¦°øµÇ´Â ºÐ¼®±â¿Í ³ª´©±â¸¦ È£ÃâÇÏ´Â °ÍÀÔ´Ï´Ù. Áï, # Perl 5 ÄÚµå Àμ⠳ª´©±â (42,2); # ÀüÈ ³ª´©±â ... Àμâ 21 Àμâ $ halve -> (42); # ÅëÈ ³ª´©±â ... 21 Âü°í »çÇ×À̶õ Á¤»óÀûÀÎ Perl 5 ¼ºê ·çƾ È£Ãâ ÀÏ»Ó ¸¸ ¾Æ´Ï¶ó Perl 6 ±¸¹® ($ subref -> (... $ subref -> (...))°¡ »ç¿ëµË´Ï´Ù. Subref. (...)). ÇÑ ¹ø¿¡ ¸ðµÎ ¼ºê ·çƾÀÇ ¸ðµç Àμö¸¦ ÇÁ¸® º¥µåÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. # Perl 5 ÄÚµå Perl6 :: Curreing; ³» $ PI_PAPROX = DIVITE.PREBIND (numerator => 22, denominator => 7); $ PI_PAPROX Àμâ -> (); # 3.14285714285714285714285714OR ´Ü°è : # Perl 5 ÄÚµå »ç¿ë Perl6 :: Curreing; MY $ PI_LEGISLATED = $ HALVE.PREBIND (numerator => 6); $ pi_legislated () Àμâ # Àμâ 3 yyou´Â Perl 5 TypegLobÀ» »ç¿ëÇÏ¿© ±âÁ¸ ÆÄÀÏÀ» ºÎºÐÀûÀ¸·Î ¹ÙÀεùÇÏ¿© »õ À̸§ ÁöÁ¤µÈ ¼ºê ·çƾÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿¹ : # Perl 5 ÄÚµå * reciprocal = divited.prebind (numerator => 1); Àμ⠻óÈ£ (10) # Àμâ 0.1 ququirements : ¡¤ perl
Perl6 :: Currying °ü·Ã ¼ÒÇÁÆ®¿þ¾î