https://groups.google.com/forum/#!topic/julia -dev/FmvQ3Fj0hHsìì ë§ì¶€ ì€ì ì°ì°ì 구묞 ìì±ì ëí í ë¡ ìŽ ììµëë€.
...
ë©ëªšë¥Œ ì¶ê°íêž° ìíŽ ížì§ëš: @johnmyleswhite ë ìëì ëêž ì€ë ëê° ìì ê±° ìŽëì ëí ìŽëìì ì§ì íìµëë€. ì¶ê°í ì ë§ ìë¡ìŽ ê²ìŽ ìë í ìë¡ìŽ ëêžì ìŒê°íŽ 죌ììì€. "ë§ìž" ìŽëªší°ìœ(íë°íë ìë¿í)ìŒë¡ íìë ëª ê°ì§ ì ììŽ ìëì ììµëë€. ìŽ ììŽìœì ì¬ì©íì¬ í ë¡ ì 걎ëë°ê³ ì ìì ìœê±°ë "ì¢ìì" ëë "ì«ìŽì"ì í¬íí ì ìëë¡ ë€ë¥ž ì ìì ì°Ÿì ì ììµëë€.
ìŽ ë²ê·žì ëí ì°¬ì±/ë°ë í¬íë Juliaê° ì¬ì©ì ì§ì ì€ì êŽì©êµ¬ë¥Œ ê°ì žìŒ íë€ê³ ìê°íëì§ ì¬ë¶ì êŽí ê²ì ëë€. ìëì í¹ì ììŽëìŽì ëí ì°¬ì±/ë°ë í¬íë @Glen-Oì 첫 ë²ì§ž ì견ì ììŽìŒ í©ëë€. (ë²ê·žê° ëª ííŽì§êž° ì ì 3ê°ì ë°ëì 1ê°ì ì°¬ì±ìŽ ìììµëë€.)
...
ìŽêž° ì ì(ìì¬ì êŽì¬ë§ íŽë¹):
ì±ê³µí ê²ìŒë¡ 볎ìŽë ì ìì ë€ì곌 ê°ìµëë€.
a |>op<| b #evaluates (in the short term) and parses (in the long term) to `op(a,b)`
ìŽ ìì ì ìííë €ë©Ž ìœê°ì ë³ê²œë§ íìí©ëë€.
<|
ì ì°ì ìì륌 ëìŒíì§ ìê³ |>
ì ì°ì ìì ìì ëììì€.<|
귞룹ì ìŒìªœìì ì€ë¥žìªœìŒë¡ ë§ëëë€.<|(a,b...)=(i...)->a(i...,b...)
íšì륌 ë§ëëë€. (í ë¡ ì€ë ëìì ì§ì íë¯ìŽ ìŽê²ì ìì êŽì©êµ¬ììì ì¬ì©ë¿ë§ ìëëŒ ë
늜 ì€íí ì©ëë ììµëë€)ì í 곌목:
>|(a...,b)=(i...)->b(a...,i...)
ë° |<(a,b...)=a(b...)
ì ë§ëëë€.>>|(a...,b)=(i...)->b(i...,a...)
ë° <<|(a,b...)=(i...)->a(b...,i...)
ì ë§ëëë€.»
, â
ë°(ëë) pipe
|>
ìì± ; «
, â
ë°(ëë) rcurry
for <|
; ë°(ëë) lcurry
for <<|
; ì€ì ì°ì°ìë¡ ìëíë ëšìŒ 묞ì ëììŽ.@infix
맀í¬ë¡ë¥Œ baseì ë§ëëë€.ì¥êž°ê°:
a |>op<| b
ì op(a,b)
ë¡ ë³ê²œíëë¡ ê°ë¥Žì³ ìœë륌 ì€íí ë ì¶ê° ì€ë²í€ëê° ë°ìíì§ ìê³ ì°ì°ìê° ì€ì ë¡ ì€ì ìì¹ì ì ìë ì ììµëë€. (ìŽë íìê° íì¬ ìŽì§ a:b
ë° ìŒí a:b:c
ì ë€ë¥Žê² ì·šêžíë ë°©ì곌 ì ì¬í©ëë€. ìµë ì¬ì©ì ì ì륌 ìíŽ ìŒì¹íë ëììŽì ëíŽ ìŽ ìì
ì ìííŽìŒ íì§ë§ ìŒì¹íì§ ìë ëììŽì ëíŽìë ìŽ ìì
ì ìííì§ ììŒë¯ë¡ ì륌 ë€ìŽ a |> b « c
ë ì¬ì í ë ê°ì ìŽí ì°ì°ìë¡ ì·šêžë©ëë€.)(https://github.com/JuliaLang/julia/issues/6946 êŽë š)
julia-dev ì€ë ë륌 ë°ìíì¬ ìŽ ì ìì ëí Stefanì 죌ì ì견ì ìžì©íë ê²ìŽ ì ì©í ê²ìŽëŒê³ ìê°í©ëë€.
ì¬êž°ì êž°ëì¹ë¥Œ ì€ì íêž° ìíŽ Julia 1.0 ìŽì ìë "구묞 íì "ì í° ì§ì¥ìŽ ìì ê²ìŽëŒê³ ìê°í©ëë€. (ëŽê° ìê°í ì ìë ì ìŒí ììžë ìë¡ìŽ
f.(v)
벡í°íë ížì¶ 구묞ì ëë€.) ììì íšìê° ì€ì ì°ì°ìì²ëŒ ìëíëë¡ íë ë°©ë²ìŽ ììŒë©Ž ì¢ê² ì§ë§ ìžìŽìì ìêží 묞ì ë ìëëë€.
Julia ê°ë° ìì¬ì ìë¹ ë¶ë¶ì ì°žì¬íë ì¬ëìŒë¡ì, ëë íµì¬ë¡ ì ë³íë³Žë€ ìë¯žë¡ ì ë³íì ìëì§ë¥Œ ì§ì€íë ê²ìŽ ë ë«ë€ê³ ìê°í©ëë€. Juliaê° 1.0ì ëë¬íêž° ì ì íŽê²°íŽìŒ í ë§€ì° ì€ìí ìë¯žë¡ ì 묞ì ê° ë§ìŽ ëšì ììµëë€.
í¹í ìŽ êž°ë¥ì 구ííë ê²ì ìì±ìë§ ìê°í íìê° ìë ìŒíì± ì°šìŽê° ìëëŒë ì ì ì ìíììì€. 몚ë ì¬ëì ììŒë¡ ìì ì ìì ìŽ ìŽ êž°ë¥ê³Œ ìíž ìì©íë ë°©ìì ëíŽ ìê°íŽìŒ íë¯ë¡ ë³ê²œ ì¬íì ì€ì ë¡ ì¥êž°ì ìŒë¡ íììì ìŒíë 몚ë ì¬ëì ìì ë.
ëë johnmyleswhiteì ìê²¬ìŽ ì ìë "ì¥êž°" íì ë³ê²œ ì¬í곌 êŽë šíì¬ ë§€ì° ì ì íë€ê³ ìê°í©ëë€. ê·žë¬ë "ì¬ìí ë³ê²œ" ë° "ì íì " 귞룹ì ëŽê° 볌 ì ìë í ꜀ ë 늜ì ìŽê³ ìí¥ìŽ ì ìµëë€.
ìŠ: ìŽ ì ìì ìµì ë²ì ì íì±ííë ë° íìí íì ë³ê²œì ìŒë° ìŽì§ ì°ì°ìì ëí ì°ì ìì ë° ê·žë£¹í, ë€ë¥ž 겜ì°ìë ë€ì ìŒìì ìž ë³ê²œ ì¢ ë¥ë§ í¬íší©ëë€. êŽë š ìë ìì ì íë íì ê°ë°ìë ìŽë¯ž ì¡Žì¬íë ìë§ì ì°ì°ìì ì믞륌 몚ë ì¶ì íŽìŒ íë ê²ë³Žë€ ë ìŽì ìŽë¥Œ ì¶ì í íìê° ììµëë€.
ê°ìžì ìŒë¡ ìŽ êµ¬ë¬žì ë§€ì° ë³Žêž° ííê³ ì ë ¥íêž° ìŽë µìµëë€. ê·žë¬ë ë ìŒë°ì ìž ì€ì 구묞ì ì¬ì©íë ê²ìŽ ì¢ë€ë ë° ëìí©ëë€.
ìŽì ëíŽ ìê°íë ì¬ë°ë¥ž ë°©ë²ì 구묞 ì ì© ë¬žì ëŒê³ ìê°í©ëë€. ìíë ê²ì ì€ì 구묞곌 íšê» op
륌 ì¬ì©íë ê²ìŽë¯ë¡ ìŽë¥Œ ì»êž° ìíŽ ë€ë¥ž íšìì ì°ì°ì륌 ì ìíë ê²ì ìí êµì°šë¡ì
ëë€. ìŠ, 몚ë ê²ì íììì ìíëìŽìŒ í©ëë€.
ì€ì ë¡ ìŽê²ì ìíŽ |
륌 íìíê³ a |op| b
륌 ì¬ì©íë ê²ì ê³ ë €í ê²ì
ëë€. í늌ììŽ ìŒë°ì ìž ì€ììŽ êµ¬ë¬žìŽ ë¹íž orë³Žë€ ë ì€ìí©ëë€. (ì°ëŠ¬ë ìŽì ì ë¹íž ì°ì°ì륌 íìíë ê²ì ëíŽ ìŽìŒêž°íìµëë€. ê·žê²ë€ì ìë ê·žëë¡ êµ¬ë¬ž ëë¹ì²ëŒ 볎ì
ëë€.)
a f b
ë ë°°ìŽ ì°ê²° ë° ë§€í¬ë¡ ížì¶ 구묞 ìžë¶ìì ì¬ì©í ì ììµëë€.
a f b
ë ìëí ì ìì§ë§ ꜀ ì·šìœíŽ 볎ì
ëë€. a^2 f b^2 f c^2
ë í©ë²ì ìŽì§ë§ a f b c
ë° a+2 f b+2 f c+2
$ë í©ë²ì ìŽì§ ìì ìŽì 륌 ëêµ°ê°ìê² ì€ëª
íë €ê³ íë€ê³ ììíŽ ë³Žììì€. (ë§ì§ë§ ê²ì ì°ì ììê° prec-timesëŒê³ ê°ì íì§ë§ ì°ì ììê° ë¬ŽììŽë ìêŽììŽ ìŽë¬í ìŒë°ì ìž ì¢
ë¥ì 묞ì ë êŽì¬ì¬ì
ëë€.)
a |op| b
ì êŽíŽì : ì²ììë Google 귞룹 ì€ë ëìì 볌 ì ìë¯ìŽ ë¹ì·í ì ììž a %op% b
륌 ì ížíìµëë€. ê·žë¬ë ì ìë |>
ë° <|
ì ì¢ì ì ì ê°ê° ìŽì§ ì°ì°ìë¡ ê°ë³ì ìŒë¡ ì ì©íê³ ìíë ëë¡ ìì°ì€ëœê² ê²°í©íì¬ ìëíë€ë ê²ì
ëë€(ì¬ë°ë¥ž ì°ì ìì ë° ê·žë£¹í, ìŠ. ) ìŽê²ì êž°ì¡Žì íì ë©ì»€ëìŠì ì¬ì©íì¬ ëšêž°ì ìŒë¡ ìŽê²ì 구íí ì ìë€ë ê²ì ì믞íë©°, ìì johnmyleswhiteì ëí ëì ìëµìì ë§íë¯ìŽ 믞ëì íì ê°ë°ììê² ê³šì¹«ê±°ëŠ¬ë¥Œ ë§ëë ê²ì íŒí ì ììµëë€.
ê·žëì ì ë a |op| b
륌 ì¢ìíê³ íì€í ë°ëíì§ë ìê² ì§ë§, íìí íì ë³ê²œì ëšìííêž° ìíŽ ë ê°ì ë€ë¥ž ì°ì°ì륌 ê°ë ë°©ë²ì ì°ŸììŒ íë€ê³ ìê°í©ëë€. ìµë íìŽí ê°ë¥ì±ì ì¶êµ¬íê³ |
ê° "bitwise or"ê° ìë "pipe"륌 ì믞íë ê²ì ë°ëíì§ ìëë€ë©Ž a |op\\ b
ëë a |op& b
ë ìŽë»ìµëê¹?
"íì ê°ë°ìì ëíµ"ì ê°ë¥í ê°ì¥ ë®ì ì°ë €ì ëë€.
"íì ê°ë°ìì ëíµ"ì ê°ë¥í ê°ì¥ ë®ì ì°ë €ì ëë€.
íì ê°ë°ìë¡ì ëë ìŽê²ì ë¶ëª í ëìí©ëë€.
|>
ë° <|
ë ë ë€ ì벜íê² ì¢ì ì€ì ì°ì°ììŽì§ë§ ë ê°ì ë€ë¥ž ì°ì°ì륌 ì¬ì©íì¬ ìŒë° ì°ì°ì 구묞ì 구ííë ë°ìë ìë¬Žë° ìŽì ìŽ ììµëë€. ê·žëŠ¬ê³ ê·ž êµ¬ë¬žìŽ ìŒë§ë ì¥í©íê³ ë§€ë ¥ì ìŽì§ ììì§ì ëíŽ íšì¬ ë ë§íŽìŒ í©ëë€.
ë ê°ì ë€ë¥ž ì°ì°ì륌 ì¬ì©íì¬ ìŒë° ì°ì°ì 구묞ì 구ííë©Ž ìë¬Žë° ìŽì ìŽ ììµëë€.
ë¶ëª
í íìë©Ž, ì¥êž° ë¹ì ì ìŽì§ f <| y
, ìŽì§ x |> f
ë° ìŒí x |> f <| z
ê° ìë ê²ì
ëë€. ì¬êž°ì 첫 ë²ì§žë íšììŽì§ë§ ë ë²ì§žë ë ê°ë íììì ë³íìŒë¡ 구íë©ëë€.
|>
ë° <|
ë ê°ì§ ìŒë° íšì륌 ì¬ì©íì¬ ìŽê²ìŽ 구íë ì ìë€ë ììŽëìŽë ê·ž ë¹ì ì ëí ìì ë€ëŠ¬ìŒ ë¿ì
ëë€.
ê·žëŠ¬ê³ ê·ž êµ¬ë¬žìŽ ìŒë§ë ì¥í©íê³ ë§€ë ¥ì ìŽì§ ììì§ì ëíŽ íšì¬ ë ë§íŽìŒ í©ëë€.
ê·žê²ì ì ë¹í ì§ì ì
ëë€. |>
ë° <|
륌 |
ë° &
ë¡ ë°êŸžë ê²ì ìŽë»ìµëê¹? íí€ ì ììê²ë ë€ì ê±°ì¬ëŠŽ ì ìì§ë§ ììŒë¡ ëë ê°ë³ì ìŒë¡ 몚ë ìë¯žê° ììµëë€.
ìŽë¥Œ |
ë° &
륌 몚ë íì¹ë ê²ì ASCIIì ì¢ì í ë¹ìŽ ìëë©° ë§ì ì¬ëë€ìŽ êµ¬ë¶ êž°ížê° ëì¹ìž ê²ì ì íží ê²ìŽëŒê³ ìê°í©ëë€.
ì¬ëë€ìŽ ë€ë¥ž ìŽì ë¡ x |> f <| y
ìŒí ì°ì°ì륌 ìíë©Ž êŽì°®ì§ë§ ë³ëë¡ ê³ ë €íŽìŒ íë€ê³ ìê°í©ëë€. íìê° |>
륌 ë€ì§í <|
ë¡ ë³ííŽìŒ íëì§ ì ëªšë¥Žê² ìµëë€. <
ì ê°ì ë€ë¥ž ì ì¬í ì°ì°ìë ê·žë° ììŒë¡ ìëíì§ ììµëë€. íì§ë§ ê·žê²ì ë³ê°ì 묞ì ìŽêž°ë íë€.
ë ë€ íì¹ë | ë° &ë ASCIIì ì¢ì í ë¹ìŽ ìëë©° ë§ì ì¬ëë€ìŽ êµ¬ë¶ êž°ížê° ëì¹ìž ê²ì ì íží ê²ìŽëŒê³ ìê°í©ëë€.
íìž.
>
ë° <
ì
ë ¥íêž° ìŽë µë€ë ê²ì ìê³ ììµëë€. íì€ í€ë³Žëì ëì¹ì±ê³Œ íìŽíì± ìž¡ë©Žìì ê°ì¥ ì¬ìŽ ê²ì &%
ë° %&
$ ì ê°ì ì ìì§ë§ R ë³ë ¬ìŽë ìëë ì¬ê°íê² ì¶ì
í©ëë€. /|
ë° |/
ë ê³ ë €í ê°ì¹ê° ììµëë€.
...
íìê° |>륌 ë€ì§í <|
ì못 ìŽíŽíì ê² ê°ìì. a |> b
ë b(a)
ë¡ êµ¬ë¬ž ë¶ìëìŽìŒ í©ëë€. (í¹ë³í 구묞 ë¶ììŽ ìë ë²ì ì ((x,y)->y(x))(a,b)
ìŽë©° ëìŒí ê²ìŒë¡ íê°ëì§ë§ ë ë§ì ì€ë²í€ëê° ììµëë€.)
a |> bë b(a)ë¡ êµ¬ë¬ž ë¶ìíŽìŒ í©ëë€.
ì, ìê² ìµëë€.
ëë ì°ëŠ¬ê° ëª ë
ëì ìŽë€ ìºëŠí°ë¥Œ ì¬ì©í ì§ì ëíŽ ìì 거륌 í ì ìë€ê³ ìê°í©ëë€. ëë @StefanKarpinski (ì§êžê¹ì§ ìŽ ëíìì ê°ì¥ ê³ ì ìžì¬)ê° ê²°ì ì ëŽëŠŽ ê²ìŽëŒê³ ì 뢰íê³ ê·žê²ì ëíŽ êŽì°®ì ê²ì
ëë€. ê·žê²ìŽ ëŽê° ë°ëíë ê²(ì: a f b
)ìŒì§ëŒë
ë€ìì ìŽíí ì ìë ëª ê°ì§ ìµì
ì
ëë€.
a |>op<| b
(íì¬ |>
ë³ê²œëì§ ìì)
a |{ op }| b
(ë§ì ìŒë°ì ìž í€ë³Žëìì ê°ê¹ê³ ëìŒí ìííž ìí, ë묎 ì¶íì§ ììµëë€. ë
늜 ì€ííìŒë¡ ìœê° ìŽìí©ëë€.)
a \| op |\ b
ëë a /| op |/ b
ëë ìŽë€ì ì¡°í©
a $% op %$ b
(ìëì ìŒë¡ íìŽí ê°ë¥, Rìì ìê°ì ì»ìì§ë§ ë€ì 못ì게ìµëë€.)
a |% op %| b
a |- op -| b
a |: op :| b
a | op \\ b
a | op ||| b
a op b
ì€í íì ëë³Žë€ ëìŽê° ë§ì§ ìë€.
ìŽ ë¬žì ì ëí BDFL ê¶íìŒë¡ ìì ì ì§ëª í ê² ê°ìµëë€! ;)
a @op@ b
?
ëŽ í¬íë \|
, |\
, /|
ë° |/
ì€ 4ê°ë¥Œ 몚ë ì¬ì©íë ê² ê°ìµëë€. íê°ë¥Œ ìíŽ ìëë¡, 칎ë 륌 ìíŽ ìë¡; êž°ë¥ìªœìŒë¡ ë°. ê·žëì:
a \| f
(ëë f |/ a
) -> f(a)
a /| f
(ëë f |\\ a
) -> (b...)->f(a,b...)
f |\ b
(ëë b //| f
) -> (a...)->f(a...,b)
ë°ëŒì:
a \| f |\ b
(ëë a /| f |/ b
) -> f(a,b)
a \| f |\ b |\ c
(ëë a /| b /| f |/ c
) -> f(a,b,c)
|/
륌 ì ìží 4ê°ì 죌ì ì°ì°ì ê°ê°ì ê·ž ìì²Žë¡ ì ì©í©ëë€. ì€ë³µì±ì íì€í ë¹íìŽì¬ì ìŽì§ë§ ë
ŒëŠ¬ì ê¹ëíšì JulianìŽëŒê³ ìê°í©ëë€. ê·žëŠ¬ê³ ì€ì©ì ìž ë¬žì ë¡, ì
ë ¥íêž° ë ì¬ìŽ ì€ì êŽì©êµ¬ ë²ì ì ì¬ì©í ì ììµëë€. ë ë€ ëê°ìŽ ìœì ì ììµëë€. ìŒëš íë륌 ë°°ì°ë©Ž ìì°ì€ëœê² ë ë€ ìŽíŽíê² ë©ëë€.
ë¶ëª í 몚ë ì¬ëì륌 ë°ê¿ì ì쪜 íìŽíë íê°ì©ìŽê³ ìë쪜 íìŽíë 컀ë§ì©ìŒë¡ ë°êŸžë©Ž ëìŒí ìë¯žê° ë©ëë€.
ëë ì¬ì í On Highì ììì êž°ë€ëŠ¬ê³ ììµëë€. ê·žë¬ë ìŽ ìì ê±° 볎êŽìë³Žë€ í€ê° í° ì¬ëìŽ ìŽ ë²ì ìŽë ìµì ë ê°ì ì êž°ížê° ìë ë€ë¥ž ë²ì ì ëíŽ ê²°ì ì ëŽëŠ¬ë©Ž ëšêž° íšì¹(íšì ì¬ì©) ë°/ëë ì ì í íšì¹(ë³í ì¬ì©)륌 êž°êºŒìŽ ìì±íê² ìµëë€.
ì°ëŠ¬ë ê°ë¥í í BDFLì ì¬ì©íì§ ììŒë €ê³ ë žë ¥í©ëë€. :)
ëë ëšì§ ëª ê°ì§ ê°ëší ì¬íì êž°ë¡í ê²ìŽëŒê³ ìê°íìµëë€.
첫짞, ì ìëê³ ìë íêž°ë²ì ë€ë¥ž ìŽì ("ë
늜 ì€íí ì¬ì©")ì <|
ê° ê°ë
ì±ì í¥ììí€ë ë°©ììŒë¡ ë€ë¥ž 컚í
ì€ížìì ì¬ì©ë ì ìë€ë ê²ì
ëë€. ì륌 ë€ìŽ, A
묞ììŽ ë°°ìŽìŽ ìê³ ìŒìªœì ìë 몚ë 묞ììŽì 10ìŒë¡ ì±ì°ë €ë©Ž ì§êž ë¹ì¥ map(i->lpad(i,10),A)
륌 ìì±íŽìŒ í©ëë€. ìŽê²ì ìœêž°ê° ìëì ìŒë¡ ìŽë µìµëë€. ìŽ íêž°ë²ì ì¬ì©íë©Ž map(lpad<|10,A)
ê° ë©ëë€.
ë짞, ìŽ ìŽë©Žì ììŽëìŽë íêž°ë²ì ìŒêŽëê² ì ì§íë ê²ì
ëë€. íšì ížì¶ì "ìì "ì ì ëìŽìì ì 믞ì¬ë¡ ë³ê²œíêž° ìíŽ ì¡Žì¬íë |>
ì°ì°ìê° ìŽë¯ž ììµëë€. ìŽê²ì ëšì§ íêž°ë²ì íì¥í©ëë€.
ì
짞, ì§ì ì€ììŽë¥Œ a f b
ë¡ ì¬ì©í ê°ë¥ì±ìŽ ë í° ë¬žì ì
ëë€. a + b
ë° a * b
ë ê²°êµ ëìŒí ì°ì ìì륌 ê°ì žìŒ í©ëë€ +
ë° *
ë íšì ìŽëŠìŽê³ ìì€í
ìì ì€í ë¶ê°ë¥íêž° ë묞ì
ëë€. ê°ë³ ì°ì ìì륌 ê°ìµëë€. ê·žë ì§ ììŒë©Ž êž°ì¡Ž ì€ì ì°ì°ì륌 ë€ë¥Žê² ì²ëŠ¬íŽìŒ íë¯ë¡ íŒëì ìŒìŒí¬ ì ììµëë€.
ì륌 ë€ìŽ
A
묞ììŽ ë°°ìŽìŽ ìê³ ìŒìªœì ìë 몚ë 묞ììŽì 10ìŒë¡ ì±ì°ë €ë©Ž ì§êž ë¹ì¥map(i->lpad(i,10),A)
륌 ìì±íŽìŒ í©ëë€. ìŽê²ì ìœêž°ê° ìëì ìŒë¡ ìŽë µìµëë€. ìŽ íêž°ë²ì ì¬ì©íë©Žmap(lpad<|10,A)
ê° ë©ëë€.
ëë ëšížíê² ëìíì§ ììµëë€. ì ìë 구묞ì â ì€ë¡í©ëë€ â ASCII ìë¬ëë¡, ìŒë° ë
ììê² ë¬Žìš ìŒìŽ ìŒìŽëê³ ìëì§ ëšì륌 ì ê³µíêž° ìíŽ ë€ë¥ž ìžìŽììë ì ë¡ê° ìë Perl ë° APLì ìµì
ì 공격ì ê°ê¹ìµëë€. íì¬ êµ¬ë¬žì ëª ì ë êžžì§ë§(5?), i->expr
ê° ëë€ êµ¬ë¬žìŽëŒë ê²ì ìë ì¬ëìê²ë ë§€ì° ëª
íí©ëë€.
a + bì a * bë ê²°êµ ê°ì ì°ì ìì륌 ê°ì žìŒ í©ëë€. +ì *ë íšì ìŽëŠìŽê³ ìì€í ìŽ ê°ë³ ì°ì ìì륌 ê°ë ê²ì ì€í ë¶ê°ë¥íêž° ë묞ì ëë€. ê·žë ì§ ììŒë©Ž êž°ì¡Ž ì€ì ì°ì°ì륌 ë€ë¥Žê² ì²ëŠ¬íŽìŒ íë¯ë¡ íŒëì ìŒìŒí¬ ì ììµëë€.
ëë ìŽê²ìŽ ì§ì§ 묞ì ëŒê³ ìê°íì§ ìëë€. a f b
infixì ì°ì ììê° ë¬Žììžì§ ë§íê³ ëªšë êž°ì¡Ž ì°ì ìì ìì€ë ì ì§í ì ììµëë€. ìŽê²ì ì°ì ììê° íšìì ìŽëŠì ìíŽ ê²°ì ëêž° ë묞ì ìëí©ëë€. "+"ëŒë íšìë "+" ì°ì ìì륌 ê°ìµëë€.
ì, ìŽë¯ž 1+2 in 1+2
구묞ì ëíŽ ìŽ ìì
ì ìííìŒë©° 묞ì ê° ëì§ ìììµëë€.
ëë ìŽê²ìŽ ì§ì§ 묞ì ëŒê³ ìê°íì§ ìëë€. afb infixì ì°ì ììê° ë¬Žììžì§ ë§íê³ êž°ì¡Žì 몚ë ì°ì ìì ìì€ë ì ì§í ì ììµëë€. ìŽê²ì ì°ì ììê° íšìì ìŽëŠì ìíŽ ê²°ì ëêž° ë묞ì ìëí©ëë€. "+"ëŒë íšìë "+" ì°ì ìì륌 ê°ìµëë€.
ëë ê·žê²ì ìëìí€êž° ìíŽ íì륌 ìì±íë ê²ìŽ ìŽë µë€ë ê²ì ì믞íì§ ììë€. ìŒêŽì± 묞ì ë¡ ìŽìŽì§ë¯ë¡ "ëë êž°ì¡Ž ì€ì ì°ì°ì륌 ë€ë¥Žê² ì²ëŠ¬íŽìŒ íŒëì ìŒìŒí¬ ì ììµëë€"ëŒê³ ë§íìµëë€. 묎ì볎ë€ë Š
ë° â¥
ë ê°ë
ì í¬ê² ë€ë¥Žì§ ìì§ë§ íëë 믞늬 ì ìë ì€ì ì°ì°ììŽê³ ë€ë¥ž íëë ê·žë ì§ ììµëë€.
ëë ëšížíê² ëìíì§ ììµëë€. ì ìë 구묞ì â ì€ë¡í©ëë€ â ASCII ìë¬ëë¡, ìŒë° ë ììê² ë¬Žìš ìŒìŽ ìŒìŽëê³ ìëì§ ëšì륌 ì ê³µíêž° ìíŽ ë€ë¥ž ìžìŽììë ì ë¡ê° ìë Perl ë° APLì ìµì ì 공격ì ê°ê¹ìµëë€. íì¬ êµ¬ë¬žì ëª ì ë êžžì§ë§(5?), i->exprìŽ ëë€ êµ¬ë¬žìŽëŒë ê²ì ìë ì¬ëìŽëŒë©Ž ë구ìê²ë ë§€ì° ëª íí©ëë€.
ìë§ë ëŽê° ë§íë ê²ì ëíŽ ë ëª
ííŽìŒ í ê²ì
ëë€. ìì
ì "lpad by 10"ìŒë¡ ì€ëª
í ì ìë€ë ê²ìŽ i->lpad(i,10)
ë³Žë€ íšì¬ ë ëª
ííë€ë ê²ì
ëë€. ê·žëŠ¬ê³ ì ìê°ìë lpad<|10
ê° ì»ší
ì€ížì êŽë šìŽ ìë íììŒë¡ ì»ì ì ìë ê°ì¥ ê°ê¹ìŽ ê²ì
ëë€.
ëŽê° ìŽëìì ìëì§ ì€ëª íë©Ž ëììŽ ë ê²ì ëë€. ì ë ìíììŽì ìí 묌늬íìì ëë€. 묎ì볎ë€ë "ëë€ êµ¬ë¬ž"ì íë¡ê·žëë° êŽì ìì í©ëŠ¬ì ìŽì§ë§ íë¡ê·žëë° ê²œíìŽ ì ì ì¬ëë€ìê²ë ê°ì¥ ëª ííì§ ììµëë€. Juliaë ëŽê° ìŽíŽíë ë°ì ê°ìŽ ì£Œë¡ ê³Œí 컎íší ìžìŽê° ëë ê²ì 목íë¡ íë¯ë¡ MATLAB곌 ë§€ì° ì ì¬í©ëë€.
lpad<|10
x|>sin|>exp
ë "ASCII ìë¬ë"ìž ìŽì ë 묎ìì
ëê¹? ê·žë¬ë |>
íêž°ë²ìŽ ì¶ê°ëììµëë€. ì륌 ë€ìŽ, |
륌 ì¬ì©íì¬ ìŒìªœì ìë ìžì륌 ì€ë¥žìªœì ìë ëª
ë ¹ìŒë¡ ì ë¬íë ë° ì¬ì©ëë bash ì€í¬ëŠœí
곌 ë¹êµíŽ 볎ììì€. "íìŽí"ëŒë ê²ì ìë€ë©Ž _ìœê°_ ë ìŽíŽê° ëì§ë§, íë¡ê·žëë°ì ë¥ìíì§ ììŒë©Ž ë§ìŽ ì ë©ëë€. ê·žë° ë©Žìì |>
ë íìŽíì²ëŒ ìŽë ŽíìŽ ë³ŽìŽêž° ë묞ì ì€ì ë¡ ë ìë¯žê° ììµëë€. ê·žëŠ¬ê³ <|
ë íêž°ë²ì ëí ìì°ì€ë¬ìŽ íì¥ì
ëë€.
%func%
ì ê°ì ë€ë¥ž ì ì곌 ë¹êµíììì€. ë€ë¥ž ìžìŽììë _ì ë¡ê° ìì§ë§ ìžìŽ íë¡ê·žëë°ì ëí êŽë²ìí ì§ììŽ ìë ì¬ëë€ìê²ë ìì í ë¶í¬ëª
í©ëë€.
ì°žê³ ë¡, ì ë ë ì€ëë í ë¡ ì€ íë륌 ë€ì ìŽíŽë³Žìê³ , ìŽë¡ ì ìŒë¡ ꜀ ì¢ì ë€ë¥ž ìžìŽìì ì¬ì©ë íêž°ë²ìŽ ìë€ë ê²ì ìììµëë€. Haskellì $#$ b(a,c,d)
a |> b c d
륌 ì¬ì©í©ëë€. íšì ìŽëŠ ë€ì ê³µë°±ìŽ ììŒë©Ž ìŽë¬í ë°©ììŒë¡ "맀ê°ë³ì"륌 ì§ì í ì ììµëë€. map(lpad 10,A)
. ëší ì°ì°ììì ì ìŒí 묞ì ê° ë°ìí©ëë€. ì륌 ë€ìŽ i->+(i,10)
ëì "+10"ìì íŽìíêž° ë묞ì map(+ 10,A)
ë ì€ë¥ë¥Œ ìì±í©ëë€.
a f b
ìì : ì°ì ìì 묞ì ë Glen-Oê° ì ìí ê²ë§íŒ ëìì§ ìì ì ìì§ë§ ì¬ì©ì ì ì ì€ì íšìê° ê°ì¥ ë®ì ì°ì ìì륌 ê°ì§ ìë í ì¡Žì¬í©ëë€. ë
Œìì ìíŽ ì°ëŠ¬ë ê·žë€ìê² ì¬ì ìê°ì ì ê³µí©ëë€. ê·ž 겜ì°,
a^2 f b^2
=> f(a^2,b^2)
a+2 f b+2
=> a+f(2,b)+2
a^2 f^2 b^2
=> (f^2)(a^2,b^2)
a f+2 b
=> 구묞 ì€ë¥?
ìŽê²ì 몚ë íì륌 ìì±íë ë°©ë²ì ìì°ì€ë¬ìŽ 결곌ìŽë¯ë¡ ê·žë° ì믞ìì í¹ë³í ê³šì¹ ìí ê²ì ìëëë€. ê·žë¬ë êŽì©êµ¬ì ìŒë° ì¬ì©ììê²ë í¹í ì§êŽì ìŽì§ ììµëë€.
칎ë êŽì©êµ¬ì ì ì©ì±
(i)->lpad(i,10)
ê° lpad<|10
(ëë ì ííë ê²œì° lpad |\ 10
ë±)ë³Žë€ ëìë€ë Glen-Oì ì견ì ëìí©ëë€. i
ë ìì í êŽë š ìë ìžì§ ë¶ëŽìŽë©° ì€ë¥ì ì ì¬ì ììžì
ëë€. ì¬ì€, ëë ì§êž ê·žê²ì ì
ë ¥í ë ì²ìì ìëì¹ ìê² (i)->lpad(x,10)
륌 ì
ë ¥íë€ê³ 맹ìží©ëë€. ë°ëŒì ì€ì 칎ë ì°ì°ì íë ê²ìŽ ì¢ì ìê°ìž ê² ê°ìµëë€.
ê·žë¬ë ê·žê²ìŽ ìëëŒë©Ž ì°ëŠ¬ê° ì íë ì€ì êŽì©êµ¬ê° 묎ììŽë ì°ëŠ¬ë ì°ëŠ¬ ìì ì 칎ë ì°ì°ì ë§ë€ ì ììµëë€. a f b
ìŽë©Ž lpad rcurry 10
ì ê°ì ê²ìŽ ì¢ìµëë€. ìì ì í€ ì
ë ¥ìŽ ìëëŒ ê°ë
ì±ì
ëë€. ê·žëì ëë ìŽê²ìŽ <|
ì ëí ìœí 죌ì¥ìŽëŒê³ ìê°í©ëë€.
a |> b c d
ëë ìŽ ì ìì ì죌 ì¢ìíë€. |>
ìŽ ì쪜ì 공백ì íì©íëë¡ ë§ë€ ì ìë€ê³ ìê°í©ëë€. ë°ëŒì a b |> f c d
=> f(a,b,c,d)
.
(ì°žê³ : a b |> f c d
map(lpad 10,A)
ì Glen-Oê° ëªšë ìë€ë©Ž (a b) |> f c d
=> f((x)->a(x,b),c,d)
ëŒë 몚ì늬 ìŒìŽì€ê° ìì±ë©ëë€. íì§ë§ ì ë 견ë ì ìë€ê³ ìê°íììì€.)
ìŽê²ì a f b
ì ê°ì ì°ì°ì ì°ì ìì ìž¡ë©Žìì ì¬ì í ì ì¬í 묞ì ê° ììµëë€. íì§ë§ |>
#$26$#$ ì ìŒí ì°ì°ìì ì°ì ììê° ìëëŒ
ì ì°ì ìì ìž¡ë©Žìì ì ìŽë ê·žê²ì ëíŽ ë§í ì ìë€ë©Ž ìŽë»ê² ë ê·žë€ì ë 견ë ì ìë€ê³ ìê°í©ëë€.
0.5ìì lpad.(["foo", "bar"], 10)
ì(륌) ìëíììì€. êž°ì¡Žì |>
ë 몚ëìê² ì¬ëë°ë ê²ì ìëëë€.
@tkelman : 묞ì ë ìê² ëë° ìì ì 묎ìì
ëê¹? ì¶ê° ì©ë륌 ì¶ê°íêž° ì ì êž°ì¡Ž |>
륌 ìì íŽìŒ íë€ê³ ìê°íìëê¹? ê·žë ë€ë©Ž ìŽë»ê²?
ê°ìžì ìŒë¡ êž°ì¡Ž |>
ì ì ê±°íŽìŒ íë€ê³ ìê°í©ëë€.
0.5ìì
lpad.(["foo", "bar"], 10)
ì(륌) ìëíììì€. êž°ì¡Žì|>
ë 몚ëìê² ì¬ëë°ë ê²ì ìëëë€.
ìì ì ëì¹ì ê² ê°ìì. ì, func.()
íêž°ë²ìŽ ì¢ìŒë©° ìŒë¶ ìí©ììë 묞ì 륌 ì°íí©ëë€. íì§ë§ map
íšì륌 ê°ëší ë°ëªšë¡ ì¬ì©í©ëë€. íšì륌 ìžìë¡ ì¬ì©íë 몚ë íšìë ìŽ ì€ì ìŒë¡ ìŽì ì ì»ì ì ììµëë€. ì륌 ë€ìŽ, ìì í ì ìì ì ì€ëª
íêž° ìíŽ ì°žì¡° ë²ížê° ìë ìµì 공배ì륌 êž°ë°ìŒë¡ ìŒë¶ ì«ì륌 ì ë ¬í ì ììµëë€. sort(A,by=i->lcm(i,10))
ëë sort(A,by=lcm 10)
?
ì€ì ì°ì°ì륌 ì ìíë ìŽë€ ë°©ë²ìŽë Glen-Oê° <|
륌 ìíë ê²ì ìííë ì°ì°ì륌 ìì±í ì ììŒë¯ë¡ ìµì
ì ê²œì° sort(A,by=lcm |> currywith 10)
. ìŽ íìŽì§ì ìì ì a
... f
... b
=> f(a,b)
륌 ë§ëë ë°©ë²ì ë
Œìíë ê²ì
ëë€. êž°ì¡Ž |>
ëë ì ìë <|
ì°ì°ìê° ê°ì¹ê° ìëì§ ì¬ë¶ë ê·ž ì ìì ìœê°ì êŽê³ê° ìë€ë ê²ì ìŽíŽíì§ë§ ë묎 íží¥ëì§ ìëë¡ í©ìë€.
ê°ìžì ìŒë¡ a |> b c
ì ììŽ ì§êžê¹ì§ ëìš ì ì ì€ ìµê³ ëŒê³ ìê°í©ëë€. Haskellì êž°ì¡Ž ê·ì¹ì ë°ëŠ
ëë€. êž°ì¡Ž |>
ì°ì°ìì ë
ŒëŠ¬ì ìŒë¡ êŽë šìŽ ììµëë€. ê·žê²ì í©ëŠ¬ì ìŒë¡ ìœêž° ìœê³ í©ëŠ¬ì ìŒë¡ ì
ë ¥íêž° ìœìµëë€. ìì°ì€ëœê² ë€ë¥ž ì©ëë¡ íì¥ëë€ê³ ëëŒë ê²ì ë¶ì°šì ìž ê²ì
ëë€. ëìíì§ ìë ê²œì° ì ìë 2ì°š ì©ëë¿ë§ ìëëŒ íµì¬ êŽì©êµ¬ì ëí ê·íì ëëì ìµìí ìžêžíììì€.
ìŒêŽì± 묞ì ë¡ ìŽìŽì§ë¯ë¡ "ëë êž°ì¡Ž ì€ì ì°ì°ì륌 ë€ë¥Žê² ì²ëŠ¬íŽìŒ íŒëì ìŒìŒí¬ ì ììµëë€"ëŒê³ ë§íìµëë€.
a f b
ì ì°ì ìì륌 ê²°ì íë ê²ìŽ ìŽë µë€ë ë° ëìí©ëë€. ì륌 ë€ìŽ in
ë ë¹êµ ì°ì ììì ìŽì ìŽ ë¶ëª
í ìì§ë§ ì€ìë¡ ì¬ì©ëë ë§ì íšìê° ë¹êµ ì°ì ìì륌 ìíì§ ìì ê°ë¥ì±ìŽ íœëë€. ê·žë¬ë ìŒêŽì± 묞ì ë 볎ìŽì§ ììµëë€. ì°ì°ìë§ë€ ì°ì ììê° ë€ëŠ
ëë€. a f b
륌 ì¶ê°íŽë $ +
ë° *
ì ëìŒí ì°ì ìì륌 ë¶ì¬íì§ ììµëë€.
|>
ë ìŽë¯ž ë¹êµì ìžì í ì°ì ìì륌 ê°ì§ê³ ììµëë€. ë€ë¥ž ì°ì ììì ëíŽìë ìì§í êŽížê° ì¢ë€ê³ ìê°í©ëë€.
ë¹ì ìŽ ëì ëìíì§ ìê³ ì°ëŠ¬ê° a |> f b
륌 ì¬ì©íë€ë©Ž ì ì¬í ì°ì°ì |+>
, |*>
ë° |^>
ê° ìì ì ììµëë€. |>
ì ëìŒíê² ìëíì§ë§ ì€ì ì°ì°ìë³Žë€ ì°ì í©ëë€. 곌íë€ê³ ìê°íì§ë§ ê°ë¥ì±ìŽ ììµëë€.
ì°ì ìì 묞ì 륌 íŽê²°íêž° ìí ë ë€ë¥ž ê°ë¥ì±ì (a f b)
ì ê°ìŽ ìŒì¢
ì êŽížë¥Œ í¬íšíë ì¬ì©ì ì§ì ì€ì ì°ì°ìì ëí 구묞ì ì¬ì©íë ê²ì
ëë€.
êŽë š í ë¡ : https://github.com/JuliaLang/julia/issues/554 , https://github.com/JuliaLang/julia/issues/5571 , https://github.com/JuliaLang/julia/pull/14476 , https://github.com/JuliaLang/julia/issues/11608 ë° https://github.com/JuliaLang/julia/issues/15612.
ëë ë¬»ê³ ì¶ë€ - ìŽë»ê² lpad<|10ìŽ x|>sin|>expë³Žë€ ë "ASCII ìë¬ë"ìžê°? ê·žë¬ë |> íêž°ë²ìŽ ì¶ê°ëììµëë€.
ëë @tkelman
ê° ì£Œì¥íë€ê³ ììíë€.
êž°ì¡Ž |>륌 ì ê±°íŽìŒ í©ëë€.
ë¶ë¶ì ìŒë¡ë _ lpad<|10
ë° x|>sin|>exp
ê° ASCII ìë¬ë ìììŒë¡ ì§ì¶íêž° ë묞ì
ëë€. :).
íì êŽížê° ìë @toivoh ì (a f b)
ê° ì§êžê¹ì§ ìµê³ ì ì ììŽëŒê³ ìê°í©ëë€.
https://github.com/JuliaLang/julia/issues/11608 êŽë š(ë°ëŒì https://github.com/JuliaLang/julia/issues/4882 ë° https://github.com/JuliaLang/julia/pull /14653): (a f b)
=> f(a,b)
ìŽë©Ž (a <strong i="8">@m</strong> b)
=> (<strong i="10">@m</strong> a b)
ìŽë©Ž ìë¯žê° ììµëë€. ìŽë ê² íë©Ž y ~ a*x+b
ì ëí êž°ì¡Žì í¹ìí ê²œì° ë§€í¬ë¡ ë
ŒëŠ¬ë¥Œ ìŒë°(ë°ëŒì íšì¬ ë í¬ëª
íš) (y @~ a*x+b)
ë¡ ë첎í ì ììµëë€.
ëí "ì구ëë êŽíž"ë ê°ê²°í ì€ììŽ ì ìì ëíŽ ì ížëë êŽì©êµ¬ìŒ ì ììµëë€. (ìŽëŠ¬ìì ì륌 ì¬ì©íì¬) a + b = string(a) * string(b)
ëŒê³ ë§íë ëì (lint ë구 ëë 컎íìŒë¬ ê²œê³ ì ìíŽ) (a + b) = string(a) * string(b)
ëŒê³ ë§íë ê²ìŽ ì¢ìµëë€. ëë ìŽê²ìŽ ì€ì ë¡ infixì ëíŽ "parens required" ìµì
ì ì íí ì§ì ì ìž ê²°ê³Œê° ìëëŒë ê²ì ìê³ ìì§ë§, LHSìì infix륌 ì¬ì©íë ì¬ëë€ìê² ì€ìë¡ ê²œê³ íì§ë§ ê·žê²ì íë ì¬ëë€ì íŽê³ í ì ìë ížëŠ¬í êŽì©êµ¬ì
ëë€. 목ì .
ëŽ ìê°ìë íì¬ (ì ëìŽê° ìë) íšì ì€ì륌 ì ì©íë 겜ì°,
ê·žë¬ë©Ž ì°ì°ììŽë©° ì°ì°ìì²ëŒ 볎ìŽê³ ìëíŽìŒ í©ëë€.
ê·žëŠ¬ê³ ì ëìœë륌 ì¬ì©íì¬ ì ìë ì€ì ì°ì°ì륌 ì§ìí©ëë€.
https://github.com/JuliaLang/julia/issues/552 ìŽí
ìë ì ìììì ê°ìŽ í€ìë륌 ì¶ê°í ì ìëë¡ íì¥ë ê²ìŽ ì¢ì ê² ê°ìµëë€.
ì륌 ë€ìŽ 1 ââ 1 == 0
ì€ììŽì ëíŽ ììì ìŽëŠì ê°ì§ ì ìë€ë ê²ì ìœê° 곌ëí ê²ì²ëŒ 볎ì
ëë€.
ìŽììì²ëŒ 볎ìŽê³ íëíŽìŒ í©ëë€.
ì€ì ì°ì°ìì ëí ê°ë ¥í ëª ëª ê·ì¹ìŽ ììŽìŒ íë€ë ë° ëìí©ëë€. ì: ì ëìœëì í 묞ì ëë ì ì¹ì¬ë¡ ëë©ëë€. ê·žë¬ë ê·žê²ë€ì 컎íìŒë¬ì ìíŽ ê°ì ëë ì구 ì¬íìŽ ìëëŒ ì êž°ì ìŒë¡ ë°ì íë ê·ì¹ìŽìŽìŒ í©ëë€. íì€í, ëë #552ê° ìŽìŒêž°ì ëìŽëŒê³ ìê°íì§ ììµëë€. ìì ê°ì íë ìœë©ë ì°ì°ìê° ìë ê²œì° ì êž°ë¥ì íë¡í íìŽííë 겜ì°ìë§ íë¡ê·žëë° ë°©ììŒë¡ ë ì¶ê°í ì ìë ë°©ë²ìŽ ììŽìŒ í©ëë€.
...
ëìê² (a f b)
(ë° (a <strong i="10">@m</strong> b)
) ì ìì ìŽ ë²ê·žì ëëšžì§ ì ìë³Žë€ ì€ìí©ëë€. ëë ê±°ì íšì¹ë¥Œ ë§ë€ê³ ì¶ì ì í¹ì ëëë€.
(a f b)
=> f(a,b)
(a f b c d)
=> f(a,b,c,d)
(a f)
=>구묞 ì€ë¥
(a+2 f+2 b+2)
=> (f+2)(a+2,b+2)
(t1=a t2=f t3=b)
=> (t1=f)((t2=a),(t3=b))
(공백ì 맀í¬ë¡ììì ê°ìŽ ê°ë¥í ê°ì¥ ë®ì ì°ì ìì륌 ê°ì§)
...
íšì¹ë¥Œ ì ì¶íë ê²ìŽ ë¶ì ì í©ëê¹?
ëë ë§ì§ë§ ë ê°ì§ 겜ì°ë¥Œ ìŽíŽíì§ ëª»íìµëë€.
(a+2 f+2 b+2)=>(f+2)(a+2,b+2)
(t1=a t2=f t3=b)=>(t1=f)((t2=a),(t3=b))
(a f b c d)
êµ¬ë¬žìŽ ë§€ì° ìŽìí©ëë€. 1 + 2 + 3
ë +(1,2,3)
ë¡ ìž ì ììŒë¯ë¡ f(a,b,c)
ë (a f b f c)
ë¡ ì°ë©Ž ì ë©ëê¹?
ì ë°ì ìŒë¡ ëë ê°ìžì ìŒë¡ Juliaê° íì¬ íì©ëë ê² ìŽììŒë¡ ì¬ì©ì ì§ì ì€ì ì°ì°ì륌 ì§ìíŽìŒ íë€ê³ íì íì§ ììµëë€.
(a f b c d)
ì ë ê°ì§ 묞ì ê° ììì ì ì ììµëë€.
첫짞, ë ë³µì¡í ííì ì¬ì©íë©Ž ìœêž°ê° ìŽë €ìž ê²ì
ëë€. ëêŽížê° ëµëµí ì ìë ìŽì ì€ íëë ìŽë€ ëêŽížê° ë€ë¥ž ëêŽížì ìì ìŽë£šëì§ í ëì ìêž° ìŽë €ìž ì ìêž° ë묞ì
ëë€. ìŽê²ìŽ ì€ì ë° íì( |>
) ì°ì°ìê° ì²ìì ë°ëì§í ìŽì ì
ëë€. íì ê³ ì ì ë§€ë² ëêŽížë¥Œ ì²ëŠ¬í íì ììŽ ë©ì§ê³ ê¹ëí ìŒìªœìì ì€ë¥žìªœìŒë¡ ìœì ì ìêž° ë묞ì í¹í ì ížë©ëë€.
ë짞, ììë³ë¡ ë§ëë ê²ê³Œ ê°ì ìŒì ë©ì§ê² í ì ìë ë°©ë²ìŽ ììµëë€. ëŽ ìŽíŽë f.(a,b)
ê° 0.5ì íêž°ë²ìŽ ëìŽ f
ê° ëžë¡ëìºì€í
ì ëí ìžìì ëíŽ ììë³ë¡ ìëíëë¡ íë€ë ê²ì
ëë€. (a f b)
ìž ê²œì° ì€ì íêž°ë²ìŒë¡ ëìŒí ìì
ì ìííë ê¹ëí ë°©ë²ì ììµëë€. êž°ê»íŽìŒ (a .f b)
ìŽìŽìŒ í©ëë€. ì ìê°ìë .(
ê° .+
ë° .*
$ ìì ì ê³µíë ëì¹ì ë©ì ììµëë€.
ì륌 ë€ìŽ Haskellì ìì 륌 ì¬ì©íë €ë 겜ì°ë¥Œ ë¹êµíììì€. #6946ì shashië ì¬êž°ì ììíë ìì ì ë§ë€ììµëë€. Haskellììë circle 10 |> move 0 0 |> animate "scale" "ease"
ëŒê³ ìì±í©ëë€. ìŽ íêž°ë²ì ì¬ì©íë©Ž ((circle(10) move 0 0) animate "scale" "ease")
ê° ë©ëë€. ìŽë animate(move(circle(10),0,0),"scale","ease")
ë³Žë€ ëª
ííì§ ììµëë€. |>
íêž°ë²ì ì¬ì©íì¬ ìíŽì ì¬ë¬ ìì¹ì ë³µì¬íë €ë ê²œì° circle 10 .|> copy [1 15 50] [3 14 25]
ê° ìì ì ììµëë€. ì ìê°ìë ìŽê²ìŽ ììŽëìŽë¥Œ 구ííë ê°ì¥ ê¹ëí ë°©ë²ì
ëë€. ê·žë° ë€ì ëžëí·ì ìì
ìì 묞ì 륌 ì²ëŠ¬íë ìŒë°ì ìž ìí ì í©ëë€.
ê·žëŠ¬ê³ ëŽê° ì§ì íë¯ìŽ a|>f b c
ë ëìŒí íêž°ë²ì ë ë§ìŽ ì¬ì©í ì ìë ìì°ì€ë¬ìŽ íì¥ì륌 ê°ë ìŽì ìŽ ììµëë€ f b c
ë "function f
with 맀ê°ë³ì b
ë° c
set), ë°ëŒì i->f(i,b,c)
ì ëìŒí©ëë€. ìŽë ê² íë©Ž ê³ ì ë¿ë§ ìëëŒ ì ë¬íë €ë ë€ë¥ž ìí©ììë ìëí ì ììµëë€. 맀ê°ë³ìê° ìë íšì(í¹í ëŽì¥ íšì)(íì€ì íšìì ê°ì²Žë¥Œ 뚌ì ê°ë ê²ì).
|>
ë ëí ìŽë ê²ìŽ íšììžì§ ë¶ëª
í í©ëë€. ì륌 ë€ìŽ (tissue wash fire dirty metal)
ê° ììë€ë©Ž wash
륌 íšìë¡ í ëì ìžìíêž°ê° ìë¹í ìŽë €ìž ê²ì
ëë€. ë°ë©Ž tissue|>wash fire dirty metal
ë " wash
ë íšìì
ëë€"ëŒë í° íìê° ììµëë€.
ìµê·Œì ë°ë ì견 ì€ ìŒë¶ë "íì§ë§ ìŽ êž°ë¥ì ëšì©í ì ììµëë€!"ëŒê³ ë§íë ê²ì²ëŒ ë€ëŠœëë€. ëŽ ëëµì ë€ì곌 ê°ìµëë€. ë¬Œë¡ í ì ììµëë€. ìíë€ë©Ž ìŽë¯ž 맀í¬ë¡ë¥Œ ì¬ì©íì¬ ìì í ìœì ì ìë ìœë륌 ìì±í ì ììµëë€. íìì ìí ì í©ë²ì ìž ì¬ì©ì ê°ë¥íê² íë ê²ì ëë€. ëšì©ì ë§êž° ìíŽ ì°ëŠ¬ë êŽë¡/êŽì©êµ¬ë¥Œ ê°ì§ê³ ììŒë©° 겜ì°ì ë°ëŒ ìì í©ëë€. 구첎ì ìŒë¡:
ëë ë§ì§ë§ ë ê°ì§ 겜ì°ë¥Œ ìŽíŽíì§ ëª»íìµëë€.
ìŽê²ë€ì ìŽë€ ììŒë¡ë ë°ëŒìŒ í ìê° ìëëë€. ê·žê²ë€ì ì°ì ìì ê·ì¹ì ìì°ì€ë¬ìŽ 결곌륌 볎ì¬ì€ ë¿ì
ëë€. (a^2 ಠ_ಠb^2)
=> ಠ_ಠ(a^2,b^2)
ë 충ë¶í ëª
ííì§ë§ ë§ì§ë§ ë ìì ë 몚ë 구묞ì ëšì©íë ê²ìŒë¡ ê°ì£Œë©ëë€.
f(a,b,c)륌 (afbfc)ë¡ ì°ë©Ž ì ë©ëë€.
(a f b c d)
ì ëí ì ì ìì ìì§í ë§íŽì ëì€ì ìê°íìµëë€. ëë ê·žê²ìŽ ìë¯žê° ìë€ê³ ìê°íê³ ê·žê²ìŽ ì ì©í ì륌 ìê°íŽ ëŒ ì ìì§ë§ ë
Œìì ì¬ì§ê° ìë€ë©Ž ìŽ ë¬žì ì ëíŽ ìŽ ì ìì ì€ëšíê³ ì¶ì§ ììµëë€.
[ì륌 ë€ìŽ:
push!
ì ê°ì "ìì°ì€ëœê² ëžë¡ëìºì€ížëë" ë°©ë²ì
ëë€.(a f b f c)
ê° f
+
ì ê°ë€ë©Ž ìë¯žê° ìì§ë§ ëë¶ë¶ì ì°ì°ìë ì€ì ë¡ +
ì ê°ì§ ììŒë¯ë¡ ì°ëŠ¬ 몚ëžìŽ ëìŽìë ìë©ëë€.
ë ë³µì¡í ííì ì¬ì©íë©Ž ìœêž° ìŽë €ìž ê²ì ëë€.
ë€ì ë§íì§ë§, ëŽ ëëµì "ê·žëì ëšì©íì§ ë§ììì€"ì ëë€.
f
ì€ì륌 ì¬ì©íì¬ $ a / (b + f(c,d^e))
ì ê°ì ë³µì¡í ííìì ìì±íë ë°©ë²ì ìíë€ê³ ê°ì íŽ ë³Žê² ìµëë€. @toivoh ì ì ìììë a / (b + (c f d^e))
ì
ëë€. Haskell곌 ê°ì ì¬ì©ë²ììë |>
ì°ì ììê° a / (b + c |> f d^e)
ëŒë í¹ì ìì 륌 ìì íêž° ìíŽ ë³ê²œëë©Ž a / (b + (c |> f d^e))
ëë "ìµì"ì
ëë€. @toivoh 'sê° ì¬êž°ë§íŒ ìœê² ì¢ì ê² ê°ìì.
(tissue wash fire dirty metal)
ìŽì ëí íŽê²°ì±
ì ì€ì ì°ì°ìì ëí ê°ë ¥í ëª
ëª
ê·ì¹ìŽëŒê³ ìê°í©ëë€. ì륌 ë€ìŽ, ì€ì ì°ì°ìê° ì ëìœëì í 묞ìì¬ìŒ íê±°ë ì ì¹ì¬ ëë ë°ì€ë¡ ëëìŒ íë ê·ì¹ìŽ ìë ê²œì° ìì ëŽì©ì (tissue wash_ fire dirty metal)
ì ê°ì ê²ì
ëë€. .
...
ììë³
ìŽê²ì ì íší ì°ë €ì
ëë€. (a .f b)
ë ((a.f) b)
ë¡ ìœì ì ììŒë¯ë¡ ëì ìê°ì
ëë€. ëŽ ì²« ë²ì§ž ì ìì (a ..f b)
ìŽì§ë§ ë³ë¡ êž°ìì§ ììµëë€.
circle 10 |> move 0 0 |> animate "scale" "ease"
ëë jquery륌 ì¬ì©íêž° ë묞ì ê·žë° íšì 첎ìŽëì ìŽì ì íì€í 볎ììµëë€. íì§ë§ ì€ì ì°ì°ìì ê°ì 묞ì ë ìëëŒê³ ìê°í©ëë€. (a f b)
ì ìì ì¬ì©íì¬ ìì ëŽì©ì ë€ì곌 ê°ìŽ ìì±í ì ììµëë€.
circle 10 |> (move <| 0 0) |> (animate <| "scale" "ease")
... Haskell ë²ì ë§íŒ ê°ê²°íì§ë ìì§ë§ ì¬ì í ìœì ì ììµëë€.
()
ëŽë¶ì ìž ê°ì§ í목ìŒë¡ ì íë ì ììµëë€.
(a f (b,c))
.(a f (b,c))
ì°ì°ì .(
ì¬ì©
ë§ì§ë§ìŒë¡, ìŒë°ì ìž ìì ì ëí ëµë³:
ì ë°ì ìŒë¡ ëë ê°ìžì ìŒë¡ Juliaê° íì¬ íì©ëë ê² ìŽììŒë¡ ì¬ì©ì ì§ì ì€ì ì°ì°ì륌 ì§ìíŽìŒ íë€ê³ íì íì§ ììµëë€.
ë¶ëª í ì°ëŠ¬ 몚ëë ì°ëŠ¬ì ì견ì ê°ì§ ê¶ëŠ¬ê° ììµëë€. (ìì§ìê°ëœìŽ ëêžì íŽë¹ ë¶ë¶ì ì°žì¡°íëì§ ì¬ë¶ë íì€íì§ ìì§ë§, ê·žë ë€ë©Ž 3ë°°ê° ë©ëë€.)
ê·žë¬ë ëŽ ë°ë¡ ì ë€ì곌 ê°ìµëë€.
â
ê° ìê³ Â§
ë ìì ì ììµëê¹?"ëŒê³ ë§íë©Ž "ë€ì ë²ì ìŽ ë늬 ì±íë ëê¹ì§ êž°ë€ëŠ¬êž°"볎ë€ë "ì§ì íŽë³Žìžì"ëŒê³ ëëµíê³ ì¶ìµëë€.(a § b)
ì ê°ì ê²ì ë§€ì° ìœêž° ìœê³ 구묞ì íë ê°ì§ ìì ìì ë°°ìž ì ìì ë§íŒ 충ë¶í ê°ë³ìµëë€.(a f b)
ë íííì§ ììë§íŒ 깚ëíë€ê³ ââìê°í©ëë€.(a f b)
ì ì ëª
ëê° íì€íì§ ììµëë€.
ê°ë¥í ì¬ì© ì¬ë¡ë ë€ì곌 ê°ìµëë€.
select((((:emp_id, :last_name) from employee_tbl) where (:city, == ,'indianapolis')) orderby :emp_id));
ìŽê²ì íì€í ì€ì íšìì ì€í ê°ë¥í ì¬ì©ì
ëë€.
select
íšìë ID íšììŽê±°ë ë¹ëë 쿌늬륌 ë°ìŽí°ë² ìŽì€ë¡ 볎ë
ëë€.
ìŽê²ì ëª
íí ìœëì
ëê¹?
ë ê·žë¥ ëª°ëŒ.
.(a f b)
ë€, ìŽíŽê° ë©ëë€. íì§ë§ ê°ë ì±ìŽ ì¢ì§ ììµëë€.
(a @. f b)
ìŽ ë ìœêž° ì¬ìŽê°ì? @.
맀í¬ë¡ë¥Œ íì±ííë ê²ì ê°ëší í ì€ì§ëŠ¬ìŽêž° ë묞ì
ëë€.
[[[ìê°íŽë³Žë©Ž, êŽíž ììŽ ì€ì 맀í¬ë¡ë¥Œ íì©íë©Ž @Glen-Oê° êŽížë¥Œ ì¬ì©íì¬ ìíë ìì
ì ìíí ì ììµëë€. circle(10) @> move 0 0 @> animate "scale" "ease"
=> @> (@> circle(10) move 0 0) animate "scale" "ease"
=macro> animate(move(circle(10),0,0),"scale","ease")
. ëë ê·ž ì룚ì
ìŽ (a f b)
ë³Žë€ ëª»íë€ê³ ìê°íì§ë§ ì ìŽë ëŽ ëìë ìŽ ì ë°ì ìž ë²ê·žë¥Œ íŽê²°í ê²ì
ëë€.]]]
...
select((((:emp_id, :last_name) from employee_tbl) where (:city, = ,'indianapolis')) orderby :emp_id);
조걎ììŽ ìŽìíê² ìžì©ë íìê° ìëë¡ "where"ì 맀í¬ë¡ë¥Œ ì¬ì©íë ê²ìŽ ì¢ìµëë€. ê·žëì:
select((((:emp_id, :last_name) from employee_tbl) <strong i="22">@where</strong> city == 'indianapolis') orderby :emp_id);
êŽížë ìœê° ì±ê°ìì§ë§ ë€ë¥ž íížìŒë¡ë íìê° ììŽ ìŽë¬í ì¢ ë¥ì ííì ì²ëŠ¬í í©ëŠ¬ì ìž ë°©ë²ìŽ ìë€ê³ ìê°í©ëë€.
select((((:emp_id, :last_name) from employee_tbl) <strong i="6">@where</strong> city == 'indianapolis') orderby :emp_id);
êŽížë ìœê° ì±ê°ìì§ë§ ë€ë¥ž íížìŒë¡ë íìê° ììŽ ìŽë¬í ì¢ ë¥ì ííì ì²ëŠ¬í í©ëŠ¬ì ìž ë°©ë²ìŽ ìë€ê³ ìê°í©ëë€.
ë€ì ìê°íŽë³Žë©Ž ê·ž ííì ì°ì ììë ì€ë¥žìªœìì ìŒìªœì ëë€. ë°ëŒì ì€ì 맀í¬ë¡ë¥Œ ì¬ì©íë©Ž ë€ì곌 ê°ìŽ ë ì ììµëë€.
select((:emp_id, :last_name) <strong i="11">@from</strong> employee_tbl <strong i="12">@where</strong> city == 'NYC' <strong i="13">@orderby</strong> :emp_id)
ëë:
<strong i="17">@select</strong> (:emp_id, :last_name) <strong i="18">@from</strong> employee_tbl <strong i="19">@where</strong> city == 'NYC' <strong i="20">@orderby</strong> :emp_id
ê·žëì ëë ì¬ì í (a f b)
륌 ì¢ìíì§ë§ ì€ì 맀í¬ë¡ë ì¢ì ëëµìŽëŒë ê²ì ìê² ëììµëë€.
ë€ìì ìì 륌 íµí ì 첎 ì ì곌 ì¥ì ë° ëšì ì ëë€.
죌ì ì©ë:
a <strong i="28">@m</strong> b
=> <strong i="30">@m</strong> a b
a <strong i="33">@m</strong> b c
=> <strong i="35">@m</strong> a b c
a <strong i="38">@m</strong> b <strong i="39">@m2</strong> c
=> <strong i="41">@m2</strong> (<strong i="42">@m</strong> a b) c
<strong i="45">@defineinfix</strong> f; a <strong i="46">@f</strong> b
=> macro f(a,b...) :(f($a,$b...)) end; <strong i="48">@f</strong> a b
=> f(a,b)
ìœë ìŒìŽì€: (ì¢ì ìœëê° ìëëŒ ëšì§ íìê° ìŽë»ê² ìëíëì§ ë³Žì¬ì£Œêž° ìíš)
t1=a <strong i="54">@m</strong> t2=b t3=c
=> <strong i="56">@m</strong> t1=a t2=b t3=c
(ì¢ì íë¡ê·žëë° ì€íìŒì ìëì§ë§)t1 + a <strong i="59">@m</strong> t2 + b
=> <strong i="61">@m</strong> t1+a t2+b
(ì¢ì íë¡ê·žëë° ì€íìŒì ìëì§ë§)a b <strong i="64">@m</strong> c
=> 구묞 ì€ë¥(??)a <strong i="67">@m</strong> b [c,d]
=> íì§ ë§ìžì. íì§ë§ <strong i="70">@m</strong> a b[c,d]
(ETA: ìëì, íšì¹ 륌 ì¬ì©íë©Ž <strong i="72">@m</strong> a b ([c,d])
ë¡ ëì€ë¯ë¡ ë ì¢ì ê²ì
ëë€.)a <strong i="75">@m</strong> b ([c,d])
=> <strong i="77">@m</strong> a b ([c,d])
[a <strong i="80">@m</strong> b]
=> ëì ì€íìŒ, ëª
ííê² íêž° ìíŽ êŽíž 륌 ì¬ì©íì§ë§ [a (<strong i="83">@m</strong> b)]
(??)a @> f b
=> @> a f b
=> f(a,b)
<strong i="90">@outermacro</strong> a b <strong i="91">@m</strong> c d
=> <strong i="93">@outermacro</strong> a (<strong i="94">@m</strong> b c d)
ì¥ì :
|>
ì°ì°ìê° íìíì§ ììµëë€. <|
ë° @Glen-Oì ëëšžì§ ì ìë ë§ì°¬ê°ì§ì
ëë€.(a f b)
ì ë¬ëŠ¬ ì°ë°ì ìŒë¡ ì¬ì©ë ìíìŽ ë§€ì° ë®ìµëë€.@defineinfix
맀í¬ë¡ë 맀í¬ë¡ê° ìë êž°ë¥ì ëí ìœì¹ ì¬ì©ì íì©í ì ììµëë€.(ì¬ìí) ëšì :
a @> f b
ëë a <strong i="112">@f</strong> b
ë (a f b)
ë§íŒ ê°ë
ì±ìŽ ëšìŽì§ë€ê³ ìê°í©ëë€.ìŽ ì€ë ëê° ìŒë§ë íì±íëìëê°ë¥Œ ê°ìí ë ìŽ ì£Œì ì ëí ëì ìë ì°ë €ë¥Œ ì¬ëë€ìê² ìêž°ìí€ê² ìµëë€. 구묞ì êŽí 묞ì ë ì¢ ì¢ ìì²ë ìì íëì ìì±íì§ë§ ê·ž íëì ìì ìŒë°ì ìŒë¡ ì¥êž°ì ê°ì¹ì ë¹ë¡íì§ ììµëë€. ë Œì ì€ìž ë³ê²œ ì¬íì ëë€. ëë¶ë¶ 구묞ì ëí ì€ë ëê° ì·ší¥ì ëí ììí ë Œìì ê°ê¹ìì§êž° ë묞ì ëë€.
íëëìŽ ìŒë°ì ìŒë¡ ë¹ë¡íì§ ììµëë€.
ì£ì¡í©ëë€. ëë ìë§ë ìë€ë¡ ë€ìŽê°ë ê²ì ê°ì¥ ì£ê° ììµëë€.
ë€ë¥ž íížìŒë¡, ëë ìŽ ì€ë ëê° "ì¬ì© ê°ë¥í" ì§ì ì ë¶ëª
í ë§ë€ìë€ê³ ìê°í©ëë€. ìµì ì ì (a f b)
ëë [ a @> f b
, a <strong i="10">@f</strong> b
륌 ë°ë¡ ê°êž°ë¡ ì ìí ì ìì] a %f% b
ëë a |> f <| b
.
ê·žëë ëë ë ìŽìì ìë€ê° ìë ëêžìŽ ë ìŽì ì§ì ì ìŽë£šì§ 못í ê²ìŽëŒê³ ìê°íë©°, ì¬ëë€ìŽ ì ìí ì§ì ìŒë¡ ìë¡ìŽ ê²ìŽ ìë í ì§êžë¶í° ì¶ì² ëë ì¶ì²ì ì¬ì©íëë¡ ê¶ì¥í©ëë€. ìŠ, êž°ì¡Ž ì ìì ëí ì§êµ ë³ê²œìŽ ìë). "í¬í ê°ë¥í ì ì"ì "ë§ìž" ìŽëªší°ìœ(íë° ìë¿í)ì ì¶ê°íìµëë€. ì€ì ìì¹ì ììì íšìì ëí í¹ì êµ¬ë¬žìŽ ììŽìŒ íë€ê³ ìê°íë€ë©Ž ë²ê·ž ì 첎ì ëíŽ ë°ë í¬í륌 íììì€.
...
ETA: ìŽ í ë¡ ì ìŽì decision
í귞륌 ì»ì ë§íŒ 충ë¶í ì±ìíë€ê³ ìê°í©ëë€.
ì°žê³ ë¡ (ë€ë¥ž ëêµ°ê°ê° ì§ì íŽì£Œêž°ë¥Œ êž°ëíìµëë€).
SQL곌 ê°ì 구묞ì í¬íšíë €ë©Ž ìì
ì ì í©í ëêµ¬ê° ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽìŽëŒê³ ìê°í©ëë€.
몚ë 맀í¬ë¡ì ë§ì°¬ê°ì§ë¡ ížì¶ ì ë²ìì 몚ë ë³ìì ì¡ìžì€í ì ììµëë€.
ì°ì ìì륌 ì ííì¬ ê³ ì í DSLì ì§ì í ì ììŒë©° 컎íìŒ ìê°ì ì€íë©ëë€.
select((((:emp_id, :last_name) from employee_tbl) where (:city, == ,"indianapolis")) orderby :emp_id));
ë ì ì°ì¬ì§ë€
sql"SELECT emp_id, last_name FROM employee_tbl WHERE city == 'indianapolis' ORDER BY emp_id"
ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽ ì ë§€ì° ê°ë ¥í 구묞ì
ëë€.
DSLì í¬íšíë ë° ì¬ì©ëë ì¢ì ì륌 ì°Ÿì ì ììµëë€.
íì§ë§ ê·žë€ì í ì ììµëë€.
ê·žëŠ¬ê³ ìŽ ê²œì° ê²°ê³Œë ì ìí ì ìë ì€ì ì°ì°ë³Žë€ íšì¬ 깚ëíë€ê³ ââìê°í©ëë€.
ì첎 ë§ìŽí¬ë¡íì/í í°ëìŽì 륌 ìì±íŽìŒ íë ì€ë²í€ëê° ìì§ë§.
ê²°ì íê·žê° íìíì§ ìë€ê³ ìê°í©ëë€.
ìŽê²ì PRë¡ êµ¬íëì§ ììŒë©° ì¬ì© ê°ë¥í íë¡í íì
ë ììµëë€.
ì¬ëë€ìŽ ê·žê²ì í
ì€íž í ì ììµëë€.
8ê°ì ì¬ì© ê°ë¥í íë¡í íì
ìŽ ìë https://github.com/JuliaLang/julia/issues/5571#issuecomment -205754539ì ëì¡°
ìŽ êžì ìœì ëë§ë€ ëëìŽ ì€ë¥Žëœ ëŽëŠ¬ëœ í©ëë€. ì€ì ë¡ íŽë³Žì§ ììŒë©Ž 몚륌 ê² ê°ìì. ê·žëŠ¬ê³ ì§êžì ê·žê²ì 묎ìì ì¬ì©í ì§ì¡°ì°š ëªšë¥Žê² ìµëë€. (F#ìì ì¬ì©í |>
ë° <|
ì ëí ìŒë¶ ì ìì ë¬ëŠ¬)
SQL곌 ì ì¬í 구묞, ìì ì ì í©í ë구ë ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽì ëë€.
SQLìŽ NSLë¡ ê°ì¥ ì ìíëëì§ ì¬ë¶ì êŽê³ììŽ ìžëŒìž 맀í¬ë¡ê° ë§€ì° ì ì©í ë§íŒ 충ë¶í ë³µì¡íì§ë§ ì첎 ë§ìŽí¬ë¡íì/í í°ëìŽì 륌 ìì±í ê°ì¹ê° ìì ì ëë¡ ë³µì¡íì§ ìì DSL ìì€ìŽ ìë€ê³ ìê°í©ëë€.
ì§êžì ëŽê° ê·žê²ì 묎ìì ì¬ì©í ì§ì¡°ì°š ëªšëŠ ëë€. (F#ìì ì¬ì©í |> ë° <|ì ëí ìŒë¶ ì ìì ë¬ëŠ¬)
ìžëŒìž 맀í¬ë¡ ì ìì íµíŽ ì¬ëë€ì 묎ì볎ë€ë ìì ì |>
ëë <|
ê°ì 맀í¬ë¡ë¥Œ ì€íí ì ììŒë¯ë¡ F#ìì ìíí 몚ë ìì
ì ì¬ì©í ì ììµëë€.
(ëë ìë€ë¡ ìì ê±° ìŽë ë Œìì ë€ìŽê°ê³ ì¶ì§ ìì§ë§ ìë ë묞ì ìŽìšë ìëµíê³ ììê³ ìžëŒìž 맀í¬ë¡ ì ìì ìëì ìŒë¡ 맀ëë¬ìŽ íëì ëë¡ ì¬ë¬ ì륌 죜ìžë€ê³ ìê°í©ëë€.)
ê²°ì íê·žê° íìíì§ ìë€ê³ ìê°í©ëë€.
ëŽê° íì íšì¹ë¥Œ ë§ëë ê²ìŽ ì ì íì§ ìŽì ì 묌ìì§ë§ ì묎ë ëëµíì§ ìììµëë€. ì§êžê¹ì§ ê·žê²ì ëí ì ìŒí ëšìŽë ë€ì곌 ê°ìµëë€.
Julia 1.0 ìŽì ìë "구묞 íì " ë°©ìì í° ì§ì¥ìŽ ìì ê²ìŽëŒê³ ìê°í©ëë€.
ì§êž íšì¹ë¥Œ ë§ëë ê²ì ë°ëíë ê²ì²ëŒ ë³ŽìŒ ì ììµëë€. 죌ë³ì ììì ìœê° ì©ì ì ìêž° ë묞ì ëë€. ê·žë¬ë ì§êž ë¹ì ì ì°ëŠ¬ê° "PR [ëë] ì¬ì© ê°ë¥í íë¡í íì ìŒë¡ 구í"íì§ ìë í (ì§êž ê²°ì íì§ ìêž°ë¡ í ê²°ì ì í¬íšíì¬) ìŽê²ì ëí ê²°ì ì ëŽëŠŽ ê°ì¹ê° ìë€ê³ ë§íê³ ììµëë€.
ê·žê² ë¬Žìš ë»ìŽìŒ? (PRìŽë 묎ìì
ëê¹?) @
í í° ëì '@'
묞ì륌 ì¬ì©íë 맀í¬ë¡ê° ìì
ì ìííì¬ <strong i="22">@testinline</strong> a '@'f b
=> @f(a, b)
? ìëë©Ž julia-parser.scmì íšì¹ë¥Œ ì ì¶íŽìŒ í©ëê¹? (ì€ì ë¡ ê·žë° íšì¹ë¥Œ ìì±íêž° ììíê³ ê°ëšíŽìŒ í ê² ê°ì§ë§ ëŽ Schemeì ë§€ì° ë
¹ì¬ììµëë€.) í
ì€íž ìŒìŽì€ë¥Œ ë§ë€ìŽìŒ í©ëê¹?
íì¬ ìŽ ë²ê·žìë 13ëª ì ì°žê°ìê° ììµëë€. íë ìŽìì ì ìì í¬ííê±°ë ë²ê·ž ì첎ì ë°ë í¬í륌 í ì¬ëì ìŽ 5ëª ìŽë©°, ìžëŒìž 맀í¬ë¡ ì ììŽ í ìŽëžì ì¬ëŒê° í ê·ž ì€ í ëª ë§ ê·žë ê² íìµëë€. ìì§ íë¡í íìŽíì í ëëŒë íì ìŽ ë€ì§ ììµëë€. ë§ì§ë§ ì§ì§í ì ì ìŽíì í¬íí ì¬ëì ìê° ì°žê°ìì ì ë°ìŽ ëìì ë ìŒì¢ ì ëëµì ìž í©ìê° ìŽë£šìŽì§ê³ íë¡í íì ì ë§ë€ê³ í ì€ížíê³ ê²°ì íë ìê°ìŽ ëììŒë©Ž í©ëë€(ëë, 겜ì°ì ë°ëŒ ììŽëìŽë¥Œ í¬êž°í ì ìì).
"PR [ëë] ì¬ì© ê°ë¥í íë¡í íì
ìŒë¡ 구í".
ê°ì§ê³ ë ì ìë ê²ì ë§í©ëë€.
ê·žëì ì€ì ë¡ ìŽë€ ëëìžì§ ì ì ììµëë€.
PRì í 늬íì€íž(pull request)ìŽë¯ë¡ íšì¹ë ë¹ì ìŽ ì¬ì©íë ì©ìŽì ëë€.
PRì ë§ë ê²œì° ë€ìŽë¡ëíì¬ í
ì€íží ì ììµëë€.
맀í¬ë¡ë¡ 구ííë€ë©Ž ë ê°ëšíì§ë§
ëë ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽ,
julia륌 ë¹ëíì§ ìê³ ë í
ì€íží ì ììµëë€.
ëŽ ë¶ëŠìŽ ìë ê²ì²ëŒ, íì§ë§ ëŽê° ê°ì§ê³ ë ì ìë ê² ììŽ ëŽ ìì ì ì견ì ëŽêž°ìë 묎몚í ê² ê°ìµëë€.
ëí ìì ê±° 볎êŽì륌 ìë€ë¡ ìŽëíì§ ììŒë €ë©Ž +1í©ëë€.
...ëë 맀í¬ë¡ì ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽìŽ ìë Infix.jl íší€ì§ìŒ ì ììµëë€.
ì°ëŠ¬ë ìŽ ëíìì "ìì ìœë ëë GTFO" ì§ì ì íì€í ëë¬íìµëë€.
ì, ë€ìì ìëíë ìœëì ëë€. https://github.com/jamesonquinn/JuliaParser.jl
ETA: í¹ì 컀ë°ì ì°žì¡°íŽìŒ íëì, ìëë©Ž ìµì ë§ì€í°ì ëí ìì ë§í¬ê° êŽì°®ìê°ì?
...
( |>
, <|
, ~
ë° @defineinfix
ì íŽë¹íë ê²ê³Œ ê°ìŽ ëŽê° ìíë ížëŠ¬í 맀í¬ë¡ê° ììµëë€. ìì ììì ~
ëë |>
ì°ì°ìì ëí ìŽì ìžëªšìë í¹ì ì¬ë¡ ë
ŒëŠ¬ë¥Œ _deprecate_ ì ê±° íì§ ììµëë€. ìëíëë¡ íìê° ë³ê²œëìì ë¿ì
ëë€. Ʞ볞 êž°ë¥ì í
ì€ížíì§ë§ 몚ë 겜ì°ë ìëëë€.
...
~
륌 ì¬ì©í íì¬ì ì¶ì
í íŽí¹ì ìŽë° ì¢
ë¥ì ëª
íí ì¬ì© ì¬ë¡ê° ììì 볎ì¬ì€ëë€. ìŽ íšì¹ë¥Œ ì¬ì©íë©Ž 맀í¬ë¡ ëììŽ íìí ë @~
ëŒê³ ë§í©ëë€. í¹ë³í ìŒìŽì€ ììŽ íšì¬ 깚ëí©ëë€. ìëë©Ž ~
ìŽ ìì í ë
í¹íê³ ë구ë ë€ìë ê·žë ê² íê³ ì¶ìŽíì§ ìì ê²ìŽëŒê³ ì§ì§íê² ë¯¿ë ì¬ëìŽ ììµëê¹?
íšì¹(ë€ìŽí°ëž ë¶ížì€ížë© íì륌 ëììŒë¡ íêž° ë묞ì ìì§ PRìŽ ìëì§ë§ íì¬ë¡ìë PR ìž¡ë©Žìì ì°ì ììê° ëìŽìŒ íš)ê° ì¬êž°ì ìë 묞ì ìŽëŠë³Žë€ ìŒë°ì ìŒë¡ ë ì ì©í©ëë€. 묞ì ìŽëŠì "ì¬ì©ì ì§ì ì€ì ì°ì°ì"ì ëë€. íšì¹ë ì€ì 맀í¬ë¡ë¥Œ ì ê³µíë©° ì€ì ì°ì°ìë ê·ž ë¶ìì©ìŒë¡ë§ ì ê³µë©ëë€.
íšì¹ë íì¬ë¡ìë ëžë ìŽí¹ 첎ìžì§ê° ìëì§ë§ ìŽê²ìŽ ê³íìŽ ëë€ë©Ž ë€ì ëšê³ë íì¬ ì¡Žì¬íë ~
ë° |>
륌 ì¬ì©íì§ ìë ê²ìŽ ë ê²ìŒë¡ ììí©ëë€. ë³ê²œ ì¬íì ê¹šê³ ììµëë€.
...
ëª ê°ì§ ê°ëší í ì€ížê° ì¶ê°ëììµëë€.
~
구묞 ë¶ìì íì¬ ì¬ë¡ ì€ íëê° ì€ìëŒë ë§€ì° ë¶ëª
í í©ìë¡ ë§ê°ëììµëë€(R ížíì±ì ìíŽ ìŽêž°ì ë§ë€ìŽì¡ìŒë©° í¹ë³í ì¢ì ìŽì ë ììµëë€). ì°ëŠ¬ë ê·žê²ì ë ìŽì ì¬ì©íì§ ìê³ ê²°êµ ì ê±°í ìì ìŽì§ë§ ìì§ ìííì§ ìììµëë€(JuliaStats íší€ì§ì ìì ìží°íìŽì€ì ëí API ìì ìì
곌 íšê»).맀í¬ë¡ë ìŽì êž°ì ì ìŒë¡ ìŒë°ì ìŽì§ë§ ì
ë ¥ ìžìë íì Expr
, Symbol
ëë 늬í°ëŽì
ëë€. ë°ëŒì íšì(ì€ì ëë êž°í)ì ê°ì ë°©ììŒë¡ íší€ì§ì ì ìë ìë¡ìŽ ì íìŒë¡ ì€ì ë¡ íì¥í ì ììµëë€. ì€ì 맀í¬ë¡ì ê°ë¥í ì¬ì© ì¬ë¡ë ì ëì¬ ì£Œì 맀í¬ë¡ DSL ëë 묞ììŽ ëŠ¬í°ëŽìì ë ì ì ê³µë©ëë€.
(ìŒì° ê²ìíŽì ì£ì¡í©ëë€. ì§êž ìì íìµëë€.)
#11608ìì ëª ê°ì§ ë¶ì ì ìž ì£Œì¥ì ëŽ ëë€.
===
ë€ìì 묎ììŒë¡ ë³í ê¹ì?
...
y = 0.0 @in@ x == 1.0 ? 1 @in@ 2 : 3 @in@ 4
ìŽê²ì ì€ë ëìì ì²ëŠ¬ëììµëë€.
ê·žë° ê²œì°ìë íì êŽížë¥Œ ì¬ì©í©ëë€ ...
귞늬ê³
ê°ì íë¡ ... 맀í¬ë¡ ììŽ ì ì©:
0.0 in 1 == 1.0 ? 2 in 2 : 3 in 4
===
ì¬ëë€ìŽ 구í, ì ì§ êŽëŠ¬, í ì€íž, ì¬ì© ë°©ë² ë±ì ë°°ììŒ íë Juliaì ë ë§ì êž°ë¥.
ì¬êž°ìì (ë¶ë¶ì ìŒë¡) ëµë³(ë° ë ë²ì§ž)ëììµëë€.
"íì ê°ë°ìì ëíµ"ì ê°ë¥í ê°ì¥ ë®ì ì°ë €ì ëë€.
===
ëšìŒ ì¬ì©ì ìœë êž°ë°ìì ëª ííê² íšê» ì¬ì©í ì ìë ëìŒí 맀í¬ë¡ ì°ì°ìì ëí ì ì륌 2ê°ì íší€ì§ê° ëìì ê°ì§ ì ìë ë°©ë²ì ìëì?
ìŽê²ì í¥ë¯žë¡ìŽ ì ì
ëë€. ë¶ëª
í 맀í¬ë¡ê° íšì륌 ížì¶íë©Ž íšìì 몚ë ëì€íšì¹ ê¶íìŽ ììµëë€. ê·žë¬ë ~
ì ê°ìŽ ì€ì 맀í¬ë¡ìž 겜ì°ìë ë ë³µì¡í©ëë€. ì, íšìë¡ ížì¶ì ìëíê³ ë§€í¬ë¡ë¡ ì¬ì©íêž° ìíŽ ì€ë¥ë¥Œ í¬ì°©íë ê²ê³Œ ê°ì íŽí¹ë íŽê²° ë°©ë²ì ììí ì ììµëë€.
ê·žë¬ë ìŽê²ì 몚ë 맀í¬ë¡ì ëí 묞ì ë§íŒìŽë ì€ìí©ëë€. ë íší€ì§ê° 몚ë 맀í¬ë¡ë¥Œ ëŽë³ŽëŽë ê²œì° "ì¬ì©"ìŒë¡ ë ë€ ê°ì§ ì ììµëë€.
ìŽê²ìŽ ì€ì 맀í¬ë¡ì 묞ì ìŒ ê°ë¥ì±ìŽ ë íœëê¹? êžì, ê·žê²ì ì¬ëë€ìŽ ê²°êµ ê·žê²ì ì¬ì©íë ê²ì ë¬ë € ììµëë€.
|>
ë° <|
$ì ê°ì ì°ì°ì륌 ì¬ì©í©ëë€. ìŽ ê²œì° ì¶©ë ê°ë¥ì±ìŽ ê±°ì ììŽ ë§€í¬ë¡ê° 묎ìì ì믞íëì§ì ëí ê³µíµ ê·ì¹ìŽ ë¹ ë¥Žê² ë°ì í ê²ìŽëŒê³ ìê°í©ëë€.~
ì ê°ì 겜ì°. ì²ììë ìŽê²ìŽ ê°ì¥ 묞ì ê° ììŽ ë³Žì
ëë€. Rìì ~
ë ì¬ë¬ ê°ì§ ì©ëë¡ ì¬ì©ë©ëë€. ê·žë¬ë ê±°êž°ììë ë€ì곌 ê°ìŽ êŽëŠ¬í ì ìë€ê³ ìê°í©ëë€.macro ~(a,b) :(~(:$a, quote($b))) end
ê·žë¬ë©Ž ~
íšìë LHSì ì íì êž°ë°ìŒë¡ ëì€íšì¹í ì ìì§ë§ RHSë íì Exprì
ëë€. ìŽë° ì¢
ë¥ì ê²ì R(íê· ë° ê·žëí ìì±)ìì ì¬ì©íë 죌ì ì©ëê° ê³µì¡Ží ì ìëë¡ í©ëë€. ìŠ, ë€ë¥ž íší€ì§ìì ìììë ë¶êµ¬íê³ ì¬ë°ë¥Žê² ë°ì¡í©ëë€.
(ì°žê³ : ìì ëŽì©ì ìì ëììµëë€. ì²ììë a ~ b + c
ì ê°ì R ííììŽ Rì ì§ì° íê°ë¥Œ íµíŽ b
ì c
ì ë°ìžë©ì ì¬ì©íë€ê³ ìê°íì§ë§ ê·žë ì§ ììµëë€. t; b
ë° c
ë ëª
ìì ìŒë¡ ì ë¬ë ë°ìŽí° íë ìì ìŽ ìŽëŠìŽì§, ììì ìŒë¡ ì ë¬ëë ë¡ì»¬ ë²ìì ë³ì ìŽëŠìŽ ìëëë€.)
===
ì¬êž°ì ììŒë¡ ëìê° ì ìë ì ìŒí ë°©ë²ì ì€ì 구íì ê°ë°íë ê²ì ëë€.
ëŽê° í ìŒ.
===
맀í¬ë¡ë ìŽì êž°ì ì ìŒë¡ ìŒë°ì ìŽì§ë§ ì ë ¥ ìžìë íì Expr, Symbol ëë 늬í°ëŽì ëë€. ë°ëŒì íšì(ì€ì ëë êž°í)ì ê°ì ë°©ììŒë¡ íší€ì§ì ì ìë ìë¡ìŽ ì íìŒë¡ ì€ì ë¡ íì¥í ì ììµëë€.
ìŽê²ì ìì ìì 곌 êŽë šìŽ ììµëë€. ì€ì 맀í¬ë¡ê° í¹ì íšì륌 ížì¶íë í, ê·ž íšìë ì¬ì í ìŒë°ì ìž ë°©ììŒë¡ ëì€íšì¹ë¥Œ ââíµíŽ íì¥í ì ììµëë€. í¹ì íšì륌 ížì¶íì§ ìë í íì¥íê±°ë ì¬ì ìíŽìë ì ëë 구조ì /구묞ì (ì: |>
ìŽ íì¬ ìííë ìì
)ì ìííê³ ììµëë€. íšì륌 ížì¶íëëŒë 맀í¬ë¡ëŒë ì¬ì€ì ì¬ì í ââì ì©í ì ììµëë€. ì륌 ë€ìŽ, ìŒë¶ ìžì륌 ìžì©íê±°ë ìœë°±ìŒë¡ ì²ëŠ¬íê±°ë ì§ì íšì ížì¶ìŽ í ì ìë ë°©ììŒë¡ ë³ìì ìŽëŠ ë° ë°ìžë©ê³Œ ëìì ìíž ìì©í ìë ììµëë€.
===
ì€ì 맀í¬ë¡ì ê°ë¥í ì¬ì© ì¬ë¡ë ì ëì¬ ì£Œì 맀í¬ë¡ DSL ëë 묞ììŽ ëŠ¬í°ëŽìì ë ì ì ê³µë©ëë€.
ì°žì¡°ë ì€ë ëìì ì§ì í ë°ì ê°ìŽ:
[Infixë] ì°ëŠ¬ ìžìŽê° ê·žë° ììŒë¡ ìëíêž° ë묞ì 구묞 ë¶ìíêž°ê° ë ìœìµëë€(ììŽ ë° ëë¶ë¶ì ìì ì¬ì©ìì 겜ì°). (ìŒë°ì ìŒë¡ ìŽììë ë§ì°¬ê°ì§ì ëë€.)
ì륌 ë€ìŽ, ë ìœêž° ìœê³ ì°êž° ìœìµëë€.
select((:emp_id, :last_name) <strong i="8">@from</strong> employee_tbl <strong i="9">@where</strong> city == 'NYC' <strong i="10">@orderby</strong> :emp_id)
ëë
send(orderby((<strong i="14">@where</strong> selectfrom((:emp_id, :last_name), employee_tbl) city == 'NYC'), :emp_id))
?
===
ëëìŽ:
11608ì ꜀ ëª íí í©ìë¡ ë§ê°ëììµëë€.
"ëê° ê·ž ìŒì í ê²ìžê°"ê° ê²°ì ì ìž í¬í륌 íë ì ìê² êœ€ ê³ ë¥Žê² ë¶í ë ê² ê°ìµëë€. ìŽì ì ìŽë ë¶ë¶ì ìŒë¡ë ë§ìŽ ì ë©ëë€. ëë JuliaParserìì ìì ì ìííìŒë©° ì¬ëë€ìŽ ìŽ ììŽëìŽë¥Œ ì¢ìíë€ë©Ž Schemeìì ìíí ìí¥ìŽ ììµëë€.
íŽí¹ë juliaparserì ëí êžì ì ìž ë°ììŽ ìë í ìŽê²ì ìŽ ì€ë ëì ë§ì§ë§ ê²ì묌ì ëë€. ëŽ ìì§ë¥Œ ê°ìíë ê²ì ëŽ ìëê° ìëëë€. ëŽ êŽì ì ì ìíêž° ìíŽ.
ì€ì 맀í¬ë¡( a <strong i="6">@m</strong> b
=> <strong i="8">@m</strong> a b
)ì ì°¬ì±í©ëë€. ê·žë ë€ê³ íŽì ëŽê° ë°ëíë 죌ì¥ì 몚륞ë€ë ê²ì ìëëë€. ë€ìì ëŽê° ë°ëíë ê°ì¥ ì¢ì 죌ì¥ì ììœíë ë°©ë²ì
ëë€.
ìžìŽ êž°ë¥ì -100ìì ììí©ëë€. ê·žê²ì 극복í ì ìë ì€ì 맀í¬ë¡ë 묎ìì ì ê³µí©ëê¹? 볞ì§ì ìŒë¡ ì ëì¬ ë§€í¬ë¡ë¡ ìíí ì ìë ì€ì 맀í¬ë¡ë¡ ìíí ì ìë ê²ì ììµëë€.
ëŽ ëëµì: Juliaë 묎ì볎ë€ë STEM íë¡ê·žë뚞륌 ìí ìžìŽì ëë€. ìíì, ìì§ëìŽ, íµê³íì, 묌늬íì, ì묌íì, êž°ê³ íìµ ì 묞ê°, ííì, ê³ë겜ì íì... ê·žëŠ¬ê³ ëë¶ë¶ì ì¬ëë€ìŽ 깚ë«ê³ ìë í ê°ì§ë ì¢ì íêž°ë²ì ì ì©ì±ì ëë€. íµê³ì ìµìí ì륌 ë€ë©Ž ë€ì곌 ê°ìµëë€. ë 늜 íë¥ ë³ì륌 ì¶ê°íë ê²ì PDF륌 컚볌룚ì íê±°ë CDFì íì묌ì 컚볌룚ì íë ê²ê³Œ ëìŒíì§ë§ ì ì륌 ì¬ì©íì¬ ë¬Žìžê°ë¥Œ íííë ê²ì ì¢ ì¢ íìë³Žë€ íšì¬ ë ê°ê²°íê³ ìŽíŽíêž° ìœìµëë€. .
ì€ì ë ì ëì¬ ë íìë ìŽë ì ë ì·ší¥ì 묞ì ì ëë€. ê·žë¬ë ë§ì 겜ì°ì ì€ììŽë¥Œ ì ížíë ê°êŽì ìž ìŽì ë ììµëë€. ì ëìŽì ì 믞ì¬ë Forth íë¡ê·žëëšžê° ë ìŒ ì ì¹ìžì²ëŒ ë€ëŠ¬ê±°ë Lisp íë¡ê·žëëšžê° ìŽì€í€ íì ë§íì²ëŒ ë€ëŠ¬ê² ë§ëë ê²ê³Œ ê°ì ì°ì ì°ì°ìì ìí ë¶ê°ë¥í 칚ì ë¬Œë¡ ìŽìŽì§ë ë°ë©Ž, infixë ì°ì°ì륌 ì¢ ì¢ ìžì§ì ìŒë¡ ê°ì¥ ì€ìí ìì¹ì ë£ìµëë€. ê°ë¥í 몚ë íŒì°ì°ìì ê°ê¹ìŽ ìì°ì ìž ì¥ì. ì묎ë Forthìì ìí ë Œë¬žì ì°ì§ ìë ë°ë ìŽì ê° ììŒë©° ë ìŒ ìíìë€ë ë°©ì ìì ìì±í ë ì€ì ì°ì°ì륌 ì¬ì©íë ìŽì ê° ììµëë€.
ì, ì€ì 맀í¬ë¡ë¥Œ ì¬ì©íì¬ ëë íë ìœë륌 ìì±í ì ììµëë€. ê·žë¬ë êž°ì¡Ž ì ëì¬ ë§€í¬ë¡ë ëšì©ëêž° ìœìµëë€. ëšì©íì§ ììŒë©Ž ì€ì 맀í¬ë¡ê° íšì¬ ë ëª íí ìœëë¡ ìŽìŽì§ ì ììµëë€.
(a+b <strong i="18">@choose</strong> b)
ìŽ binomial(a+b,b)
;score ~ age + treatment
ìŽ linearDependency(:score, :(age + treatment))
;domSelect("#logo") @| css "color" "red" @| fadeIn "slow" <strong i="25">@thenApply</strong> addClass "dummy"
ë addOneTimeEventListener(fadeIn(css(domSelect("#logo"),"color","red"),"slow"),"done",(obj,evt)->addClass(obj,"dummy"))
ì€ìì ì§ì¥ì ë¥ê°í©ëë€.ëë ìŽê²ë€ìŽ ëšì§ ì¥ëê°ì ìëŒë ê²ì ìê³ ìì§ë§ ìì¹ì ì íšíë€ê³ ìê°í©ëë€.
ë¹íì€ ë¬žììŽ ëŠ¬í°ëŽë¡ ìì ìì ì ìíí ì ììµëê¹? ë ë²ì§žì ìž ë²ì§ž ìë NSLë¡ ìëí©ëë€. ê·žë¬ë NSLì 묞ì ë ë묎 ë§ì ìì 륌 ì€ë€ë ê²ì ëë€. í¹ì 묞ë²ì ìµìíì§ ìì í NSLì í í°ìŽ 묎ììžì§, ìë ììë ë§í ê²ë ìê³ ì. ì€ì 맀í¬ë¡ë¥Œ ì¬ì©íë©Ž ìì 몚ë ì륌 ìíí ì ìë 충ë¶í ìì ê° ìì§ë§ "ì¢ì" ìœë륌 ìœì ë í í°ìŽ 묎ììŽë©° ììë êŽížê° ìŽëë¡ ê°ëì§ ëª ííì§ ììµëë€.
ìë €ì§ì§ ìì 믞ì§ììì ìë €ì§ ë¯žì§ìë¡ ìŽëíë €ë©Ž í¹ì íëª©ìŽ íìí©ëë€. ë¶ííë ìŽë¥Œ ìííë ë©ì»€ëìŠìŽ ììµëë€. ë¹ì ì 죌ì¥ìë ì¡Žì¬íì§ ìë êµ¬ì¡°ê° íìí©ëë€.
ìŽì <|
ìŽ ì€ë¥žìªœ ê²°í©(#24153)ìŽë¯ë¡ ìŽêž° a |>op<| b
ì ììŽ ìëí©ëê¹?
ëë https://github.com/JuliaLang/julia/pull/24404#issuecomment -341570934ìì StevenìŽ ìžêží íŽí¹ì ìí íší€ì§ë¥Œ ë§ë€ììµëë€.
ìŽê²ìŽ ìí¥ì 믞ì¹ë ì ì¬ì ì€ì ì°ì°ìì ìë ìëì§ë§ <~
륌 ì¬ì©íê³ ì¶ìµëë€. íìë íì¡°íì§ ìì ê²ì
ëë€ -- ëŽê° 묌걎ì ì¡°ì¬ì€ëœê² ëìë a <~ b
ê° a < (~b)
$ 륌 ì믞íꞰ륌 ìí©ëë€.
<-
ìë ë¹ì·í 묞ì ê° ììµëë€.
ìŽê²ìŽ ìŽë¯ž ìŽ ë¬žì ë ë€ë¥ž 묞ì ì ìíŽ ë€ë£šìŽì¡ë€ë©Ž ì£ì¡íì§ë§ ì°Ÿì ì ììµëë€.
ì ì¬ì ìŒë¡ a < ~b
ì ê³µë°±ìŽ íìí ì ììµëë€. ì°ëŠ¬ë ì ì ê·žë° ê·ì¹ì ì¶ê°íìµëë€. ê·žë° ë€ì ì€ì ì°ì°ìë¡ <-
ë° <~
륌 ì¶ê°í ì ììµëë€.
ê°ì¬ í©ëë€ @JeffBezanson , ê·žê²ì ì¢ì ê²ì ëë€! ìŽê²ì í¹ë³í 겜ì°ì ëê¹, ìëë©Ž ë ìŒë°ì ìž ê·ì¹ì ëê¹? ë ë§ì ì€ì ì°ì°ì륌 íì©íê³ , ëª ííê³ ììž¡ ê°ë¥í ìœë륌 ì ê³µíê³ , êž°ì¡Ž ìœë륌 ê°ë¥í í ì ê² ì€ëšíêž° ìíŽ ê·ì¹ìŽ ìŽë»ê² ëìŽìŒ íëì§ì ëí ëª ê°ì§ ìžë¶ ì¬íìŽ ìë€ê³ íì í©ëë€. ìŽìšë ëì곌 ë¹ ë¥ž ìëµì ê°ì¬ë늜ëë€. ìíŽ ë³µ ë§ìŽ ë°ìŒìžì!
a <~ b
ê° a < ~b
a =+ 1
륌 ì€ë¥(ëë ìµìí ê²œê³ )ë¡ ë³Žê³ ì¶ìµëë€.
ëë ìŽê²ìŽ ꜀ ì€ëë í ë¡ ìŽëŒë ê²ì ìê³ ìê³ ì§ë¬ží ì§ë¬žì ꜀ ì€ëì ì ì êž°ëìì§ë§ ëëµí ê°ì¹ê° ìë€ê³ ìê°íìµëë€.
ìŽì
<|
ìŽ ì€ë¥žìªœ ê²°í©(#24153)ìŽë¯ë¡ ìŽêž°a |>op<| b
ì ììŽ ìëí©ëê¹?
ìëì, ë¶ííë |>
ê° ì¬ì í ì°ì í©ëë€. ì
ë°ìŽížê° ìë£ëë©Ž <|(a,b)=a(b)
륌 ì ìíë©Ž a<|b<|c
륌 ì±ê³µì ìŒë¡ ìííì¬ a(b(c))
...륌 ì»ì ì ìì§ë§ ìŽê²ì ë€ë¥ž ê°ë
ì
ëë€.
2ë ëì ëê²°, 2, 5ìŒ ì ëêžê³Œ ì»€ë° !
ì¬ì©ì ì ì ê°ë¥í ìŽí ì°ì°ì f45b6be 묞ì ì°žì¡°
ê°ì¥ ì ì©í ëêž
ì€í íì ëë³Žë€ ëìŽê° ë§ì§ ìë€.