рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ рдЬреЗред рдПрдХ рд╢реМрдХрд┐рдпрд╛ рдХреА рдирдЬрд╝рд░ред рднрд╛рдЧ 3. рд╕рд╛рд░рдгреА1. рдмрдХреНрд╕реЗ
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬрдореНрдореВ рдореЗрдВ рд╕рдВрдЬреНрдЮрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИред рдПрдХрд▓ рд╕реНрдерд┐рд░ рдореВрд▓реНрдпреЛрдВ рдкрд░ рднреА, рд╡реЗрдХреНрдЯрд░ рдСрдкрд░реЗрд╢рди рдЕрдиреБрдореЗрдп рд╣реИрдВред рдПрдХ рд╕рд╛рде, рдпрд╣ рд╕рдм рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рджрд┐рд╢ рд╕рдЬрд╛рддреАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдЕрдкрдиреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЬреЗ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЖрдпрддрд╛рдХрд╛рд░ рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВ, рддрдерд╛рдХрдерд┐рдд рдорд╛рдирдХ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рджрд╛рдВрддреЗрджрд╛рд░ рд╕рд░рдгрд┐рдпрд╛рдБред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░рдгрд┐рдпрд╛рдБ рднреА рдЕрд╕рдорд╛рди рддрддреНрд╡реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЗ рд╡рд┐рд╖рдо рдЕрдиреБрдХреНрд░рдореЛрдВ - рдмрдХреНрд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмреЙрдХреНрд╕ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдПрдХ рдордирдорд╛рдирд╛ рддрддреНрд╡ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдмрдХреНрд╕реЗ рдХреА рдПрдХ рд╕рд░рдгреА, рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ (рд╢реВрдиреНрдп *)ред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЙрдХреНрд╕рд┐рдВрдЧ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдПрдХ рдЖрдпрд╛рдореА рдЖрдпрд╛рдореА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ рддреАрд╕рд░рд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИред
рдПрдХ рдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЛрдирдбрд┐рдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "<" рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ("рдУрдкрди") рдмреЙрдХреНрд╕ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ - рдореЛрдирдбрд┐рдХ рдХреНрд░рд┐рдпрд╛ ">":
]x =. <1 2 3 +-----+ |1 2 3| +-----+
рдмреЙрдХреНрд╕ ASCII рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдореЗрдВ рд╣реА рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╣рдо рдмреЙрдХреНрд╕ рдХрд╛ рдорд╛рди рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
>x 1 2 3
рдмреЙрдХреНрд╕ рдореЗрдВ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛ ";" рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЬреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдмреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
1;2;2 +-+-+-+ |1|2|2| +-+-+-+ (i.10) ; 42 ; (i. 2 3) +-------------------+--+-----+ |0 1 2 3 4 5 6 7 8 9|42|0 1 2| | | |3 4 5| +-------------------+--+-----+
рдРрд╕реЗ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдЕрдиреБрдХреНрд░рдо рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рднрд╛рд╖рдг рдХреЗ рдЙрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдореЗрдВ рдЬреНрдЮрд╛рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛рд╡рд┐рд╢реЗрд╖рдг "рдмреАрдЪ":
;/ i.3 +-+-+-+ |0|1|2| +-+-+-+
рдпрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛:
(#@>)"0 (1 2 3; 2; 3 4) NB. ( = 0) 3 1 2
рдЕрдЧрд▓рд╛, рдмреЙрдХреНрд╕ рдХреЗ рджреВрд╕рд░реЗ рддрддреНрд╡ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛ "{" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
1 { ;/i.3 +-+ |1| +-+
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЙрд▓ рд╕рд░рдгреА рдХреЗ рдмреЙрдХреНрд╕рд┐рдВрдЧ рддрддреНрд╡ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирдкреИрдХ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдмреЙрдХреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдмрд╛рд░ рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рдХреЛ рдПрдХ рдмреЙрдХреНрд╕ рд╕рдВрдЬреНрдЮрд╛ рдореЗрдВ рд▓рд┐рдкрдЯреЗрдЧреАред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдПрд░реЗ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ "рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ" рдХреЗ рд▓рд┐рдП, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмреЙрдХреНрд╕ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдпреВрдирд┐рдпрди "рдФрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрдШ рдФрд░ рдСрдкрд░реЗрдВрдб рдкрд░ рджрд╛рдИрдВ рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдмрд╛рдИрдВ рдХреНрд░рд┐рдпрд╛ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ред рд╣рдо рдмреЙрдХреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
(+: &. >) ;/ i.3 +-+-+-+ |0|2|4| +-+-+-+
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ред> рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:
each &.> (+: each) ;/ i.3 +-+-+-+ |0|2|4| +-+-+-+
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЧрддрд┐ рдореЗрдВ, рдмреЙрдХреНрд╕ рдХрд╛рдлреА рд╣реИрдВ (рдкрд░рд┐рдорд╛рдг рдХреЗ 3 рдЖрджреЗрд╢ рддрдХ!) рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдкреАрдЫреЗ рдЕрдВрддрд░рд╛рд▓ред
2. рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
"рдПрдХ рд╕реБрдВрджрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?"
рдЖрдЗрд╡рд░рд╕рди: "рд░рд╣рд╕реНрдп рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдк рдЙрд╕рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред"
рдлреНрд░реЗрдб рдмреНрд░реБрдХреНрд╕, рдП рд╕реЗрд▓рд┐рдмреНрд░реЗрд╢рди рдСрдл рдХреЗрдиреЗрде рдЗрд╡рд░рд╕рди, 2004-11-30
рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореМрди рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЬреЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд╣реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреЗ рдСрдкрд░реЗрд╢рди "3:" рдФрд░ "4:" рд╣реИрдВ (рдирд┐рд░рдВрддрд░ рдХреНрд░рд┐рдпрд╛ "3:" рдФрд░ "4:" рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдСрдкрд░реЗрдВрдб рдХреЛ "y" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдИрдВ рдУрд░ "x" рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
v1 =: 3 : '- y' NB. v2 =: 4 : 'x + y' NB.
рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЯреЗрд╕реНрдЯрд┐рдХрд┐рдЯрд┐рдХ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреИрд╕реЗ, рддреЛ рдЖрдк рдЕрджреНрднреБрдд рдорд╛рдирдХ рдХреНрд░рд┐рдпрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
13 : 'x + y' + 13 : 'x - (y + 1)' [ - 1 + ]
рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХреНрд░рд┐рдпрд╛рдПрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣, рдЕрдВрддрд┐рдо рдЧрдгрдирд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдПрдирд╛рд▓реЙрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╣реБ-рдкрдВрдХреНрддрд┐ рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ, рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╡реЗ "=" рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рддреАрдХ "") рд╣реИ
v =: 4 : 0 NB. z =. y + 1 NB. "z =: ..." z x - z ) NB. , . 3 4 v 1 2 1 1
J рдХреЗ рдкрд╛рд╕ рдЬрд╛рдБрдЪ рд╕реНрдерд┐рддрд┐рдпреЛрдВ (.if), рд▓реВрдкреНрд╕ (ред рдЪрд╛рд▓реВ), рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рднреА рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░реЗрдВред
3. рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреНрд╡рд┐рдХреЙрд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рдкрд░рд┐рдЪрдп рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдЗрдП рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╣реАрдВ рдерд╛ред
def len(xs): """>>> len([1,2,3]) 3""" if xs == []: return 0 return 1+len(xs[1:])
рдЬрдореНрдореВ рдореЗрдВ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзреЗрдп рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рд╕рдВрдЬреНрдЮрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╣реИред рдЗрд╕ prateate isa рдХреЛ "рд╕рд░рдгреА рд╣реИ" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦреЗрдВрдЧреЗ:
isa 1 NB. 0 isa i.0 NB. 0 isa 1 2 3 NB. 3
рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдСрдкрд░реЗрдВрдб рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рд╕реЗ рдПрдХ рддрддреНрд╡ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 1 рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛рдИ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИред рдпрд╣ рдХреНрд░рд┐рдпрд╛ "{" рд╣реИ
isa =: ((1: 1&{) :: 0:) : [:
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "1 рдФрд░ {" рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрдВрдб рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЭреВрдареА (рд╢реВрдиреНрдп) рд▓реМрдЯреЗрдВред рд╣рдордиреЗ рдХреНрд░рд┐рдпрд╛ рдХреА рдбрд╛рдЗрдПрдбрд┐рдХ рдХреЙрд▓ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдмрдВрдз рднреА рдЬреЛрдбрд╝рд╛ред
рдХрд┐рд╕реА рдХрдВрдбреАрд╢рди рдХреА рдЬрд╛рдБрдЪ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо @ рдпреВрдирд┐рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╣реА рдСрдкрд░реЗрдВрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА
3:`4: @. 1 4: 3:`4: @. 0 3:
рд╣рдореЗрдВ рд▓рдВрдмрд╛рдИ = 1 рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕рд╣реА рдСрдкрд░реЗрдВрдб рд▓рдВрдмрд╛рдИ = 1 рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдЕрд░реНрдерд╛рддред рдпрджрд┐ рдЗрд╕ рд╕рдВрдЬреНрдЮрд╛ рдкрд░ рд╡рд┐рдзреЗрдп isa 0 рджреЗрддрд╛ рд╣реИред
len =: 1:`(.....) @. isa
рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЗ рд╕реНрдерд╛рди рдкрд░, рд╣рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдЕрдиреБрдХреНрд░рдо рдХреА рдкреВрдВрдЫ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдЗрд╕ рддрдереНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗ рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреНрд░рд┐рдпрд╛ "$:" рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ
len =: 1:`(>:@$:@}.) @. isa len 1 2 3 3 len 17 1
рдЕрдЧрд▓рд╛ рдХрджрдо рд╣рдорд╛рд░реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ рддрд╛рдХрд┐ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдкреВрдВрдЫ рдмрди рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╛рдПрдВ рдСрдкрд░реЗрдВрдб рдореЗрдВ рд╕рдВрдЪрд┐рдд рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдХреНрд░рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП, рд░рдВрдЧрд╛рджрд┐рдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
len2 =: [`((>:@[) $: (}.@])) @. (isa@]) 1 len2 i.7 7
рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рджрд┐рдЦрддреА рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣реИред рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛ len2 рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
def len2(acc,xs): if xs == []: return acc else: return len2(acc+1, xs[1:])
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд░рд┐рдпрд╛ "6 !: 2" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдкрдиреЗ рджрд╛рд╣рд┐рдиреЗ рдСрдкрд░реЗрдВрдб рдХреЛ рдХрдИ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдПрдВ рдСрдкреЗрд░реИрдВрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рди рдХреЗ рдФрд╕рдд рд░рди рд╕рдордп рдХреЛ рд╕реЗрдХрдВрдб рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
time =: 6!:2 x =: i.1000 10 time 'len x' NB. 0.00614873 10 time '1 len2 x' NB. 0.00553225 10 time '# x' NB. 1.67641e_6
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд J рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдкрд░рд┐рдорд╛рдг рдХреЗ 3 рдЖрджреЗрд╢ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдореНрдореВ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЧрд╣рд░рд╛рдИ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ рдФрд░ рдкреВрдВрдЫ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдХреЛрдИ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрд╕реА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗрд╡рд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдЖрдкрд╛рддрдХрд╛рд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред
4. рдирд╛рдо рд╕реНрдерд╛рди
рд╣рдо рдЬреЗ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЬреЗ рдореЗрдВ OOP рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд░реНрдирд┐рдВрдЧ рдЬреЗ рдореЗрдВред
рдзреНрдпрд╛рди рджреЗрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐, J рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рд╣реИрдВ рдЬрд┐рдирдореЗрдВ OOP рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред
рдПрдХ рдирдП рдирд╛рдорд╕реНрдерд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
cocurrent 'name'
рдЬрд╣рд╛рдВ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рд╕реНрдерд╛рди '
base
' рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕реЗ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдХреЛрдб рдмреНрд▓реЙрдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧреБрдВрдЬрд╛рдЗрд╢ рдкрд░ рд▓реМрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
cocurrent 'base'
рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВрдмрд░реНрд╕ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдкреНрд░рддреНрдпрдп _name_ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдБ "рдирд╛рдо" рдирд╛рдорд╕реНрдерд╛рди рд╣реИред рдмрдбрд╝реЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
cocurrent 'INNER' rate =: 10 v =: 3 : 'rate + y' cocurrent 'base' v_INNER_ 1 11 rate_INNER_ =: 1 v_INNER_ 1 2
5. рдЙрджрд╛рд╣рд░рдг
рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдПрдХ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ - рддреНрд╡рд░рд┐рдд рд╕реЙрд░реНрдЯ рдХреНрд░рд┐рдпрд╛ред J рдкрд░ Hoar рд╕реЙрд░реНрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
sel=: 1 : 'x # [' quicksort=: 3 : 0 if. 1 >: #y do. y else. (quicksort y <sel e),(y =sel e),quicksort y >sel e=.y{~?#y end. )
рдЖрдЗрдП рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рд░реЗрдЦрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
- 1 рдкрдВрдХреНрддрд┐ред рдЖрдЗрдП рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рд╣рд╛рдпрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ sel рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдкрд╣рд▓реЗ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬреИрд╕реЗ рднрд╛рд╡ рд╣реИрдВ
1 : ''
рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╣реИ рдЬреЛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдпрд╣ рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ (рдХреНрд░рд┐рдпрд╛ "#") рдмрд╛рдПрдВ рд╕рдВрдХрд╛рд░реНрдп рд╕реЗ (рдХреНрд░рд┐рдпрд╛ "[") рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛ "x" рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
- 2 рдкрдВрдХреНрддрд┐ред рдХреНрд╡рд┐рдХ-рд╕реЙрд░реНрдЯ рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╣реБрдд рдкрд░рд┐рднрд╛рд╖рд╛ 3: 0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
- 3 рд▓рд╛рдЗрдиред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдпрд╣ рдЬрд╛рдБрдЪрддреА рд╣реИ рдХрд┐ рдпрджрд┐ 1, рдСрдкрд░реЗрдВрдб рдХреА рд▓рдВрдмрд╛рдИ ("#") рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ (">") рд╣реИ, рддреЛ рдЗрд╕ рдСрдкрд░реЗрдВрдб рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдЫрдБрдЯрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- 4-6 рд▓рд╛рдЗрдиред рдЕрдиреНрдпрдерд╛, рдХреНрд░рд┐рдпрд╛ "," рдПрдХ рд╕рд░рдгреА рдореЗрдВ 3 рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреНрд╡рд┐рдХреЙрд░реНрдЯ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реЗ рд╡реЗ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рддрддреНрд╡ "рдИ" рд╕реЗ рдЫреЛрдЯреЗ рд╣реИрдВ, рдлрд┐рд░ "рдИ" рдХреЗ рдмрд░рд╛рдмрд░ рддрддреНрд╡ рд╣реИрдВ, рдлрд┐рд░ рддрддреНрд╡ рдмрдбрд╝реЗ "рдИ" рд╣реИрдВред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореВрд▓реНрдп "рдИ" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "{" рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рдПрдХ рддрддреНрд╡ рдХреА рдкрд╕рдВрдж ("?") рдЦрдВрдб 0 рдкрд░ рд╕реНрдерд┐рддрд┐ ... рдСрдкрд░реЗрдВрдб_рд▓реЙрдЧреНрд░реЗрдВрдб ("#y")ред
- 7 рд▓рд╛рдЗрдиред рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдкреВрд░рд╛ рд╣реЛрдирд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдпрд╛, рддреНрд╡рд░рд┐рдд рдЫрдБрдЯрд╛рдИ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)
рдпрд╛рдж рд╣реИ рдХрд┐ "$:" рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "@" рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЧрдгрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред
6. рдЯрд┐рдкреНрд╕
рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд░рд╣рд╕реНрдп рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? 500 рд▓реЗрдЦ рд▓рд┐рдЦреЗрдВред
рд░реЛрдЬрд░ рд╣реБрдИ, рдпрд╛рдж рдХрд░ рдХреЗрди рдЗрд╡рд░рд╕рди, 2004
- рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред J рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред
- рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рдирд╛рдо рджреЗрдВред V1, v2 рдЖрджрд┐ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
- рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
- рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
- рд╕реНрдерд╛рди рдФрд░ рдХреЛрд╖реНрдардХ рдХреЛ рдЯреЗрд╕реНрдЯрд┐рдХрд▓ рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд░рдЦреЗрдВ, рдЬрд╣рд╛рдБ рд╡реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдВред рднрд╛рд╡ "+ /: + *: ~ 1:" рдФрд░ "+ /: (+ *: ~ 1 :)" рдХреА рдЧрдгрдирд╛ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬреЗ рдореЗрдВ рдЧреБрд░реБ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдХреЛрдб рдЕрдХреНрд╕рд░ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред
- рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХрд┐рдпрд╛ рдерд╛: рдЗрд╕рдореЗрдВ рдПрдХ рдореЛрдирд╛рдб рдФрд░ рдбрд┐рдпрд╛рдб рдХреЙрд▓ рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЬреЗ рдХреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
- рдХреЙрдореНрдкреИрдХреНрдЯ рдХреНрд░рд┐рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдмрдирд╛рдПрдВред 20 рд╡рд░реНрдгреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реЗ рджреЛ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ 40 рд╡рд░реНрдгреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
- рдпрджрд┐ рдПрдХ рдХреНрд░рд┐рдпрд╛ "рдкреБрд╕реНрддрдХ" рдЧрдгрд┐рддреАрдп рд╕реВрддреНрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЯреИрдЯрд┐рдЯ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдпрджрд┐ рдпрд╣ рдЧрдгрдирд╛ рдХреА рджрдХреНрд╖рддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рдСрдкрд░реЗрдВрдб рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗрдВред
- рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╣реА рдЪрдХреНрд░реАрдп рдЕрдирд┐рд╡рд╛рд░реНрдп рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджреНрдпрдкрд┐ рд╡реЗ рдХрднреА-рдХрднреА рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛рд╡рд┐рд╢реЗрд╖рдг "/", "\" рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдУрдУрдкреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
- рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
- рдкреБрд╕реНрддрдХ "рдЬреЗ рдлреЙрд░ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕" рдкрдврд╝реЗрдВред "рд▓реВрдкрд▓реЗрд╕ рдХреЛрдб" рд╢реАрд░реНрд╖рдХ рд╡рд╛рд▓реЗ рдЕрдзреНрдпрд╛рдпреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдВред
7. рдЖрдЧреЗ рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ
рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрднреА рди рджреЗрдВ - рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрдЧрд╛
рдХреЗрдиреЗрде рдЗрд╡рд░рд╕рдиред
- http://vector.org.uk рдмреНрд░рд┐рдЯрд┐рд╢ рдПрд╕реЛрд╕рд┐рдПрд╢рди рдСрдл рдПрдкреАрдПрд▓ рдкреНрд░реЛрдлреЗрд╢рдирд▓реНрд╕ рдХреА рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдкрддреНрд░рд┐рдХрд╛ рд╣реИред рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдкреАрдПрд▓ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ рдЬреЗ, рдХреНрдпреВ, рдХреЗред рд╕рдм рдХреБрдЫ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрддреНрдпрдзрд┐рдХ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреАред
- http://nsl.com - рд╕рд╛рдЗрдЯ рдХрд╛ рдирд╛рдо "рдиреЛ рд╕реНрдЯрд┐рдВрдХрд┐рдВрдЧ рд▓реВрдкреНрд╕" рд╣реИред рд╕рд╛рдЗрдЯ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдмрджрд▓рддреА рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдХреЗред рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, K рдореЗрдВ K рдХреЗ рдПрдХ рдЖрд▓рд╕реА рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
- http://www.jsoftware.com/jwiki/Links - рдЬреЗред рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣
- http://jsoftware.com/forums.htm - рдЬреЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА (рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдкреНрд░рддрд┐ рджрд┐рди рдФрд╕рддрди 8-12 рд╕рдВрджреЗрд╢)ред
- http://www.jsoftware.com/jwiki/Essays - рдЗрд╕ "рдЬреНрдЮрд╛рди рдХреЗ рдЕрдЯреВрдЯ рд╕реНрд░реЛрдд" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ - рд▓реЗрдЦреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЖрдк 30 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рд╕реБрдбреЛрдХреВ рд╕реЙрд▓реНрд╡рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдХреЗрди рд╕реЗ рдХрд╣рд╛ рдерд╛, "рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреЗрди, рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рд╣реИрдВ, рдФрд░ рдбреЙрди рдиреБрдЯ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред" рдХреЗрди рдиреЗ рддреБрд░рдВрдд рдкреВрдЫрд╛: "рдореЗрд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?"
- рдЬреЙрдп рдЯрдЯрд▓, рдП рд╕реЗрд▓рд┐рдмреНрд░реЗрд╢рди рдСрдл рдХреЗрдиреЗрде рдЗрд╡рд░рд╕рди, 2004-11-30