ìŽê²ì 0.6ìì 1.0ìŒë¡ ì§ì ì ê·žë ìŽëí íìì ìê°íŽ ëìŒë¯ë¡ ìë¡ìŽ íëì ëí ì€ëª ì ì°Ÿë ê²ì ê³ ì¬íê³ ì¬ì© ì€ëš ê²œê³ ë¥Œ 볌 êž°íì¡°ì°š ìììµëë€.
julia> beforefor = true
true
julia> for i in 1:2
beforefor = false
end
julia> beforefor # this is surprising bit
true
julia> beforeif = true
true
julia> if 1 == 1
beforeif = false
end
false
julia> beforeif # Another surprise!
false
julia> function foo()
infunc = true
for i in 1:10
infunc = false
end
<strong i="7">@show</strong> infunc
end
foo (generic function with 1 method)
julia> foo() # "I don't get this"
infunc = false
julia> total_lines = 0
0
julia> list_of_files = ["a", "b", "c"]
3-element Array{String,1}:
"a"
"b"
"c"
julia> for file in list_of_files
# fake read file
lines_in_file = 5
total_lines += lines_in_file
end
ERROR: UndefVarError: total_lines not defined
Stacktrace:
[1] top-level scope at ./REPL[3]:4 [inlined]
[2] top-level scope at ./none:0
julia> total_lines # This crushs the students willingness to learn
0
ëë ëŽê° ì€ëª í ì ìë€ê³ ìê°íë ì믞ìì ìŽê²ìŽ ë°ìíë ìŽì 륌 "ìê³ " ììµëë€. ì€ìœí륌 ëì íë ê²ê³Œ ê·žë ì§ ìì ê²ì ëí ì€ëª ìì ììží 찞조륌 충ë¶í ì°žì¡°íì§ë§, ìŽê²ìŽ ëíì ì¬ì©ì 묞ì ê° ìë€ê³ ìê°í©ëë€.
ì 1ììë ìë ì€íšê° ë°ìí©ëë€. ì 2ììë ìê°ëœìŽ ìë€ë ì€ë¥ ë©ìì§ê° íìë©ëë€. ì€ë ì§ì¥ìì ë žížë¶ì ìì±í ìŒë¶ Python ìœëì ê±°ì ë¹ì·í©ëë€.
Pythonì ê·ì¹ìŽ 묎ììžì§ ì ëªšë¥Žê² ì§ë§ ìŒë°ì ìŒë¡ globalì ížì¶íì§ ìê³ ì ì ë²ììì í목ì í ë¹í ì ìë€ë ê²ì ìê³ ììµëë€. ê·žë¬ë REPLììë ìëí©ëë€. ìë§ë REPLìì ê·ì¹ìŽ ë€ë¥Žê±°ë 몚ë êž°ë¥ ë²ìì ìë ê²ì²ëŒ ëìŒí ë ŒëŠ¬ê° ì ì©ëêž° ëë¬žìŒ ê²ì ëë€.
ëë ëŽê° ìíë 구첎ì ìž ë³í륌 ì ìíêž°ì 충ë¶í ê·ì¹ì ìžìŽ ë³ížì¬ë¡ í ì ììŒë©°, Slackì êž°ë°ìŒë¡ íë©Ž ìŽê²ì ìŒë¶ ì¬ëë€ì ìíŽ ë°ëì 묞ì ë¡ ìžìëì§ë ììµëë€. íë귞륌 ì§ì í©ëë€.
ìíž ì°žì¡°:
https://discourse.julialang.org/t/repl-and-for-loops-scope-behavior-change/13514
https://stackoverflow.com/questions/51930537/scope-of-variables-in-julia
( @mlubin ë¹, ìŽê²ì êŽë š ë³ê²œ ì¬íì ëë€ https://github.com/JuliaLang/julia/pull/19324)
Stefanì ì¬êž°ì ìŽ ë¬žì 륌 íŽê²°í ì ìë í ê°ì§ ê°ë¥ì±ì let
ëžë¡ì REPL í목ì ìëìŒë¡ ëííë ê²ìŽëŒê³ ì ì íìµëë€.
ê·žë¬ë ë¹ì ìŽ í ì ìë€ë ì ìì íŒëì€ëœì§ ììµëê¹?
a = 1
ê·ž ë€ì a
륌 ì¬ì©íìê² ìµëê¹? 몚ë ìµìì í ë¹ì ëíŽ global
ê° ìœì
ëì§ ìë í ì¶ìž¡í ì ììµëê¹?
ìŽ ëìì 몚ë ê²ì let
ëžë¡ìŒë¡ ëííë ê²ìŽ ìëëŒ ê·žë³Žë€ ë ë³µì¡í©ëë€. ííì ëŽë¶ì í ë¹ë ì ìì let-bindí ë€ì ííì ëì ìë ì ì ê°ì let-bound ê°ìŒë¡ ì¶ì¶íŽìŒ í©ëë€.
ë°ëŒì a = 1
륌 a = let a; a = 1; end
ì ê°ì ê²ìŒë¡
for i in 1:2
before = false
end
ë€ì곌 ê°ìŽ ë°ë ê²ì ëë€.
before = let before = before
for i in 1:2
before = false
end
end
ìì§í ì§êž ì¬ëë€ìŽ ìŽë° íŒëë°±ë§ íê³ ìë€ë ì¬ì€ì ì§ìŠìŽ ë©ëë€. ìŽ ë³ê²œ ì¬íì 10ê°ì ëì ë§ì€í°ì ìììµëë€.
ëë ìµê·Œê¹ì§ master륌 ë§€ì° ë«ì§ ìì ê²ì ëí ì£ì±
ê°ìŽ ììŽì ìŽ íŒëë°±ìŽ ì°žìŒë¡ ì¡°êž ëŠììµëë€. íë¡ê·žë뚞륌 ìí ê² ìŽì(ëë¶ë¶ì for
룚íë ëŒìŽëžë¬ëŠ¬ ìœëì íšì ëŽë¶ì ìì ê²ì
ëë€) ìŽê²ìŽ ê°ë¥Žì¹ë ê²ì ëí ì°ë €ì
ëë€. ì¢
ì¢
for
룚íë íšìë ë²ìë³Žë€ ëšŒì íìµë©ëë€(ë¬Œë¡ ì€ì ë¡ ë¬Žìš ìŒìŽ ìŒìŽëê³ ìëì§ ìŽíŽíë €ë©Ž ë²ì륌 ìŽíŽíŽìŒ íì§ë§ ê°ë¥Žì¹ ëë ì¢
ì¢
ëšìíë©ëë€).
ì¬êž°ìë íšìë ì ì ë³ì륌 ì€ëª íì§ ìê³ ìŽë³Žììê² 1ìì 10ê¹ì§ì ì륌 í©íë ë°©ë²ì ê°ë¥Žì¹ë ê²ìŽ ìœê° ìŽë €ìì§ëë€.
ìì§í ì§êž ì¬ëë€ìŽ ìŽë° íŒëë°±ë§ íê³ ìë€ë ì¬ì€ì ì§ìŠìŽ ë©ëë€. ìŽ ë³ê²œ ì¬íì 10ê°ì ëì ë§ì€í°ì ìììµëë€.
ê³µì íê² ë§íìë©Ž Julia 0.7ì 13ìŒ ì ì ì¶ìëììµëë€. ìŽê²ì ëë¶ë¶ì Julia ì¬ì©ì륌 ìí ìë¡ìŽ ë³ê²œ ì¬íì ëë€.
ìì§í ì§êž ì¬ëë€ìŽ ìŽë° íŒëë°±ë§ íê³ ìë€ë ì¬ì€ì ì§ìŠìŽ ë©ëë€. 10ê°ì ëì ë§ì€í°ì ë³ê²œ ì¬íìŽ ììµëë€.
ë¶ííë ê°ì¥ì늬ìì ìííë ê²ì ê°ë¹í ì ìë ì¬ëë€ìê²ë ë¶ííë, ì°ëŠ¬ì êŽì ììë ìì í ìë¡ìŽ ê²ì ëë€.
ìì§í ì§êž ì¬ëë€ìŽ ìŽë° íŒëë°±ë§ íê³ ìë€ë ì¬ì€ì ì§ìŠìŽ ë©ëë€. ìŽ ë³ê²œ ì¬íì 10ê°ì ëì ë§ì€í°ì ìììµëë€.
ê·žëŠ¬ê³ ê°ë° ë¶ìŒìì ë²ìŽëëë¡ ê²©ë €ë°ì ì¬ëë€ìê²ë "ì°ëŠ¬ êŽì ìì 볎멎 ìì í ìë¡ìŽ ê²"ì ëë€.
ì¬ëë€ìŽ ìŽê²ì ìŒë§ë ì€ë í ì€ížíŽìŒ íëì§ì ëí ë©í í ë¡ ì íë ëì ì§êž ë¹ë©Ží 묞ì ì ì§ì€íêž° ìíŽ ëìê°ë ë ê¹ì? íì¬ ìí©ìŽë êž°ëíŽ ë³Žê² ìµëë€.
ëë ìµê·Œê¹ì§ master륌 ë§€ì° ë«ì§ ìì ê²ì ëí ì£ì± ê°ìŽ ììŽì ìŽ íŒëë°±ìŽ ì°žìŒë¡ ì¡°êž ëŠììµëë€. íë¡ê·žëëšžì ëí êŽì¬ ìŽì(ëë¶ë¶ì for 룚íë ëŒìŽëžë¬ëŠ¬ ìœëì íšì ëŽë¶ì ìì) ìŽê²ìŽ êµì¡ì ëí ì°ë €ì ëë€. ì¢ ì¢ for 룚íë íšìë ë²ìë³Žë€ ëšŒì íìµë©ëë€(ë¬Œë¡ ì€ì ë¡ ì§íëë ìí©ì ìŽíŽíë €ë©Ž ë²ì륌 ìŽíŽíŽìŒ íì§ë§ ê°ë¥Žì¹ ëë ì¢ ì¢ ëšìíë©ëë€).
ì¬êž°ìë íšìë ì ì ë³ì륌 ì€ëª íì§ ìê³ ìŽë³Žììê² 1ìì 10ê¹ì§ì ì륌 í©íë ë°©ë²ì ê°ë¥Žì¹ë ê²ìŽ ìœê° ìŽë €ìì§ëë€.
ìŽê²ì í° í¬ìžížì ëë€. 묞ì ê° ì€ì ë¡ ë¬Žììžì§ ìê² ë í ì€ì ë¡ ìŒë§ë ì ê² ëíëëì§ ëëìµëë€. ê·žê²ì ìŒì곌 í ì€ížìì ë§ì Julia ìœëìì 묞ì ê° ëì§ ììŒë©°, ì€ìë¡ ì ììŽìë ë§ì ë³ì륌 ëë¬ëìµëë€(ìë PRì ë°ë¥ž Julia Baseì í ì€ížìì, ê·žëŠ¬ê³ ëë¶ë¶ì DiffEqì í ì€íž). ëë¶ë¶ì ê²œì° ë¯žë¬íê² ì못ë íëì ë¹ì ìŽ ì»ë ê²ìŽ ìëëŒ(룚íì ë³í륌 êž°ëíš), ì€íë € 룚íìì ë³ì륌 ì¬ì©í ì ìꞰ륌 êž°ëíë ê²ìŽ ëŽê° ë°ê²¬í ëë¶ë¶ì ê²ì ëë€. ì¬êž°ì ìŽê²ì í ì€íž ì€í¬ëŠœížë¥Œ v1.0ìŒë¡ ì ë°ìŽíží ë ëíë©ëë€. ë°ëŒì ì¢ì ì ì ëë¶ë¶ì ê²œì° ì¬ì©ììê² ì€ë¥ê° íìëê³ ìì íë ê²ìŽ ìŽë µì§ ìë€ë ê²ì ëë€.
ëì ì ì 룚í ëŽë¶ì global x
륌 ë£ìŽìŒ íë ê²ìŽ ìœê° ì¥í©íê³ ìŽì REPL ìœëë íšì ìœëì ë€ë¥Žë€ë ê²ì
ëë€. ìŽì ë³Žë€ ë ì§êŽì ìž ëììžì§ ìëì§ ë íë/ìííž ë¡ì»¬ ì€ìœíì ë¶ëª
í ìŒë¶ ì£ì§ ìŒìŽì€ê° ììê³ ì€ëª
íêž°ê° ë ìœêž° ë묞ì ìŽë €ìŽ ì견ì
ëë€. ê·žë¬ë ëìì ìŽì ì ëìë³Žë€ íšì¬ ë ê°ê²°í ì€ëª
ìŽ ììŒë©Žì ë²ì ì§ì ê·ì¹ì ìŽíŽíë ê²ìŽ ì€ìí 겜ì°ì ë ìœê² ì ê·Œí ì ììµëë€. ð€·ââïž.
ì ë let
ì°šëš ì€íì ââë³Žê³ ì¶ìµëë€. ìŽë ê² íë©Ž ëšìíë ë²ì ì§ì ì€ëª
곌 íšê» "ë¹ì ì ì ë§ë¡ ê·žë ê² ë§ì ì ìì ìíì§ ììë€"ëŒë ìž¡ë©Žì ì ì§íë©Žì ëìì REPL ìœëê° íšì ëŽë¶ì²ëŒ ëìíëë¡ ë§ë€ ê²ì
ëë€(ìžê²¬ì ì°ëŠ¬ê° íì ìíë ê² ê°ìµëë€). ëë ê·ž ë°ëë¡ ì¬ëë€ìŽ ì ììŒë¡ ìëíë €ë ë³ì륌 ì§ì íê² í©ëë€.
global x = 5
for i = 1:5
println(x+i)
end
ëª
ìì±ì ì ì§íë ì¢ì ë°©ë²ìŽ ë ì ììŒë©° "REPL ìœëê° ì ììŒë¡ ìžíŽ ë늌"ì íšì¬ ë ëª
ííê² ë§ë€ ì ììµëë€. ëšì ì ë€ì íë² íšìì 묎ìžê°ë¥Œ ëì§ë ë° global
ë§ì»€ê° íìíì§ ìë€ë ê²ì
ëë€.
ê·žë¬ë ìŽê²ìŽ ëíëë 겜í¥ì ê°ìí ë ì€ì ë¡ ê²ìì 깚거ë ìŒì€í íŒê° ìëëë€. ìŽë€ ìí¬ìììë ìžêžíŽìŒ í ì¬ë§ê·ë¡ ë¶ë¥íê³ ì¶ì§ë§ ê·žê² ë묞ì v1.0ì ì¬ì©í ì ìë ê²ì ìëëë€. ìŽ ëìì ë³ê²œíë ê²ìŽ ì€ëšìŒë¡ ë¶ë¥ëì§ ìê³ v2.0ìŽ íìíꞰ륌 ë°ëëë€.
REPLìŽ íšì ëŽë¶ì²ëŒ ëìíŽìŒ íë€ë ìê°ìŽ ë§ìì ë€ì§ë ììµëë€. ë¶ëª í ê·žë ì§ ììŒë¯ë¡ ì ì ë²ìì²ëŒ ìëí ê²ìŒë¡ êž°ëí©ëë€. ëìê² REPLìŽ ì ì ë²ìì²ëŒ ìëíì§ ìë ê²ì ì ì¬ì ìŒë¡ ìŽ ë¬žì 륌 ìŒìŒí€ë ë¶ìŒì¹ë³Žë€ íšì¬ ë íŒëì€ë¬ìž ê²ì ëë€.
ê·žëŒìë ë¶êµ¬íê³ ìµìí 묞ìë ìŽ ë¬žì ì ëíŽ ì¢ ë ëª
ìì ìŽìŽìŒ íë€ê³ ìê°í©ëë€. ìì°ì€ëœê² 묞ì륌 ìœìŒë©Ž Ʞ볞ì ìŒë¡ ì ì ë²ììì ëììŽ ë°ìíëë¡ local
í€ìë륌 ì¬ì©íŽìŒ íë€ê³ ê°ì íì ê²ì
ëë€.
ì ë
let
ì°šëš ì€íì ââë³Žê³ ì¶ìµëë€. ìŽë ê² íë©Ž ëšìíë ë²ì ì§ì ì€ëª 곌 íšê» "ë¹ì ì ì ë§ë¡ ê·žë ê² ë§ì ì ìì ìíì§ ìììµëë€"ëŒë ìž¡ë©Žì ì ì§íë ëìì REPL ìœëê° íšì ëŽë¶ì²ëŒ ëìíëë¡ ë§ë€ ê²ì ëë€(ìŽë ê²ë³Žêž°ì ì°ëŠ¬ê° íì ìíë ê² ê°ìµëë€)
"REPLì íšì ëŽë¶ì ëìŒí©ëë€"ëŒê³ ìê°íë€ë©Ž outer
ì ëíŽìë ìê°íŽìŒ í©ëë€.
julia> i = 1
1
julia> for outer i = 1:10
end
ERROR: syntax: no outer variable declaration exists for "for outer"
ë:
julia> function f()
i = 0
for outer i = 1:10
end
return i
end
f (generic function with 1 method)
julia> f()
10
ìì§í ì§êž ì¬ëë€ìŽ ìŽë° íŒëë°±ë§ íê³ ìë€ë ì¬ì€ì ì§ìŠìŽ ë©ëë€. ìŽ ë³ê²œ ì¬íì 10ê°ì ëì ë§ì€í°ì ìììµëë€.
ì¬ëë€ì ëíì ì¬ì©ìŽë êµì¡ì ìíŽ ë§ì€í°ë¥Œ ì¬ì©íì§ ìê³ íší€ì§ë¥Œ ì ê·žë ìŽëíë ë° ë§ì€í°ë¥Œ ì¬ì©íê³ ììµëë€. íší€ì§ë ìŽê²ì ìí¥ì ìµìííê³ ëë¶ë¶ ìë šë íë¡ê·žëëšžê° ìì±í©ëë€.
(I ì£Œì¥ ìŽëíì§ë§, # 19324ìì£Œê³ íŒëë°±ìíë ëª ì¬ë ì€ íëìë€ ìŽì ëìì ìíŽ .)
(ìŽìì ìŒë¡íì§ ìì ìœì
íì¬ìŽ ì€ ë¹ ê¹šë ë°©ë²ì ìŽì ëììŒë¡ ë€ì ë³ê²œíë ê²ì
ëë€ let
- ê·žë¥ ìŽì ìœë ë³µì ëžë¡ ëë ì묎ê²ë julia-syntax.scm
ì ìµì
ìŒë¡)륌 REPL. ëë IJuliaì ê°ì í겜ìì ì¬ì©í ì ìëë¡ íë €ë©Ž soft_global_scope=false
íë귞륌 include
, include_string
ë° Core.eval
íì¬ ë³µìíììì€. ì€ëë íë.
(ì ë #19324ìì íŒëë°±ì ì ê³µí ëª ì ëë ì¬ëë€ ì€ íëììµëë€.
ë€, ê°ì¬í©ëë€. ì°ëŠ¬ê° ì íì íêž° ë묞ì ì§êžì ë³ë¡ ì€ìíì§ ììµëë€. 10ê°ì ëì êµœê³ ìì ì±ì ëí ì¥êž°ì ìž ìœìì ê°ì§ê³ ì¶ìíìµëë€. ê·žë¬ë¯ë¡ ì§êž íŽìŒ í ìŒì ììŒë¡ 묎ìì íŽìŒ íëì§ì ì§ì€íë ê²ë¿ì ëë€.
ìŽì ëì곌 ì ëì ì€ìì ì íí ì ìë ìµì ìŽ ìë€ë ê²ì í¥ë¯žë¡ì§ë§ ë§€ì° íŽí¹ë ëëì ëë€. ìŠ, 몚ë ì¬ëìŽ ë¶ëª í íŒëì€ë¬ìíë ë²ì ì§ì ëììŽ ëëë¡ ìì ë¿ë§ ìëëŒ íì ìë ê²ì ìëë©° í¬íš ì¬ë¶ë ì ì íëê·žì ë°ëŒ ë€ëŠ ëë€. ê·žê²ì ꜀ ë¶ë§ì¡±ì€ë¬ìŽ ëëì ëë€.
ìŽì ëì곌 ì ëì ì€ìì ì íí ì ìë ìµì ìŽ ìë€ë ê²ì í¥ë¯žë¡ì§ë§ ë§€ì° íŽí¹ë ëëì ëë€.
ëêµ°ê°ê° "unbreak me" ìííž ì€ìœí AST ë³íì 구ííë©Ž IJulia, OhMyREPL ë±ìì ì¬ì©íê³ ì¶ì ê²ì ëë€. ìŽ ìì ìì Ʞ볞 REPLìŽ ììë ê²ìŒë¡ 볎ìŽë íšì¬ ë 묞ì ê° ëë ìí©ìŽ ë°ìí©ëë€.
ëŽê° í ë§ì ê·žê² ìëìŒ. ë¶ëª í ì°ëŠ¬ë ìŽë¬í 몚ë ìí©ìì ëìŒí ì룚ì ì ì¬ì©íŽìŒ í©ëë€. ê·žë¬ë ë²ì ì§ì ê·ì¹ì ëí ë ê°ì§ ë€ë¥ž ë³íìŒë¡ 구ííë ê²ì íëì ë²ì ì§ì ê·ì¹ ì§í©ì ì¬ì©íì¬ ìœë ë³íìŒë¡ 구ííë ê²ë³Žë€ ë 깚ëíŽ ë³Žì ëë€. ê·žë¬ë ìë§ë ê·žê²ë€ì êž°ë¥ì ìŒë¡ ëë±í©ëë€. ê·žë¬ë ìë¡ê³ ëšìí ë²ì ì§ì ê·ì¹ + REPL ì€íìŒ ì ë ¥ì ê°ì žì íê°íêž° ì ì ë³ííë ë³íìŒë¡ ì€ëª íë ê²ìŽ ë ì¬ìŽ ê² ê°ìµëë€.
ìŽë ìµìì ìì€ì ë¹íšì ë²ì ëŽì í ë¹ë ê²œì° ëªšëì ìë ì ìì ì ììŒë¡ 죌ìì ì¶ê°íì¬ ííìì ë³ííë Meta.globalize(m::Module, expr::Expr)
ë¡ ìíí ì ììµëë€. ë¬Œë¡ ìŽì íìê° í ê²ê³Œ ëìŒíë€ê³ ìê°íì§ë§ Meta.globalize
ì§ì ížì¶íê³ REPLìŽ íê°íë ê²ì 볌 ì ìêž° ë묞ì ì¡°êž ë í¬ëª
í©ëë€.
ìŽë ìµìì ìì€ì ë¹íšì ë²ì ëŽì í ë¹ë ê²œì° ëªšëì ìë ì ìì ì ììŒë¡ 죌ìì ì¶ê°íì¬ ííìì ë³ííë
Meta.globalize(m::Module, expr::Expr)
ë¡ ìíí ì ììµëë€.
ì€ì ë¡ ëª ë¶ ì ì ìŽì ê°ì ê²ì 구ííêž° ììíìµëë€. ê·žë¬ë julia-syntax.jl
ìµì
ìŒë¡ 구ííë ê²ìŽ íšì¬ ì¬ìž ê² ê°ìµëë€.
julia-syntax.scm
ì¬ë°ë¥Žê² ê°ì žì€ë ìœëê° ìŽë¯ž ììµëë€.include_string
륌 ì¬ì©íì¬ ì 첎 ìœë ëžë¡ì íê°íê³ ë§ì§ë§ ííìì ê°ì ê°ì žì€ë IJuliaì ê°ì 겜ì°ìë íšì¬ ë ê¹ë€ë¡ìµëë€. ííìì ìí 구묞 ë¶ììŒë¡ ì ííŽìŒ í ë¿ë§ ìëëŒ ìë ì€ ë²íž(ì€ë¥ ë©ìì§ ë±ì 겜ì°)륌 ì ì§íêž° ìíŽ ìœê°ì íŽì»€ê° íìí ì ììµëë€. (ì¬êž°ììë ìëí ì ìë ìŽë° ì¢
ë¥ì ChangePrecision.jlì ëí íŽí¹ì ì°Ÿìì§ë§.)include
ìžë¶ íìŒì 겜ì°ë ë§í ê²ë ììµëë€.ê·žë¬ë ìë¡ê³ ëšìí ë²ì ì§ì ê·ì¹ + REPL ì€íìŒ ì ë ¥ì ê°ì žì íê°íêž° ì ì ë³ííë ë³íìŒë¡ ì€ëª íë ê²ìŽ ë ì¬ìŽ ê² ê°ìµëë€.
ëë ìŽê²ìŽ ëíì ì¬ì©ìŽë í¹ì íëê·žê° ìë include
ëíŽ ê·ì¹ìŽ ë ê¹ë€ë¡ë€ê³ ë§íë ê²ë³Žë€ ìë¡ìŽ ì¬ì©ììê² ì€ëª
íêž°ê° ë ì¬ìžì§ ì¬ê°íê² ìì¬í©ëë€.
ë€ìì globalize(::Module, ast)
구íì ëëµì ìž ìŽìì
ëë€. https://gist.github.com/stevengj/255cb778efcc72a84dbf97ecbbf221fe
ì¢ì, ëë ì€ ë²íž ì 볎륌 볎졎íë globalize_include_string
íšì륌 구ííë ë°©ë²ì ììëê³ ê·žê²ì ëŽ ìì ì ì¶ê°íìµëë€.
ì¬ëë€ìŽ ìŽ ì ê·Œ ë°©ìì ì¢ìíë ê²œì° ê°ë¥í(ë¹ì€ëš) ë°©ë²:
globalize
ë±ì êž°ë¥ìŽ ìë SoftGlobalScope.jl íší€ì§ë¥Œ 늎늬ì€í©ëë€.ìëë©Ž ìŠì REPL.jlë¡ ë¡€ë§íë ê²ìŽ ì€ì©ì ì ëê¹? 1.0ìì stdlib ì ë°ìŽížê° ìëíë ë°©ìì ëíŽ ìì í ëª ííì§ ììµëë€.
ëŽê° ê·žê²ì 깚ì§êž° ì¬ìŽ ììžìŽ ë 묎ìžê°ë¥Œ ëì¹ê³ ìë 겜ì°ë¥Œ ëë¹íì¬ ëŽ êµ¬íì ìŽíŽë³Žììì€.
1.1ìì REPLì êž°ë³žìŽ ìë êž°ë¥ìŒë¡ ì¬ì©í ì ììµëê¹?
#28523 ë° #28750ì ì€ë³µì
ëë€. ì¬ëë€ìê² ì ì ë³ìì ëíŽ ê°ë¥Žì¹ê³ ì¶ì§ ìë€ê³ ë§íë ì¬ëë€ìê²ë for
룚í ì ì íšì륌 뚌ì ê°ë¥Žì¹ë ê²ìŽ ì¢ìµëë€. ìŽìšë íšìë ë Ʞ볞ì ìŽë©° ìœëê° íšìë¡ ìì±ëìŽìŒ íë€ë êž°ëì¹ë¥Œ ì€ì íë ë° ëììŽ ë©ëë€. ë¶ížíšì ìŽíŽíì§ë§ ìŽ ë²ì ì§ì ëìì êµì¡íì ìŽì ìŒë¡ ë°ë ì ììµëë€. "ì¬ì€ ì ì ë³ìë í¹í 룚íìì ì¬ì©íë ê²ìŽ ë묎 ì¢ì§ ìì ìžìŽìì ì¬ì©íêž° ìíŽ ë€ë¡ 몞ì 굜íê² ë§ëëë€."
ìŽë¥Œ ìíŽ REPLì êž°ë³žìŽ ìë êž°ë¥ì ì¶ê°íë ê²ì êŽì°®ì ê² ê°ìµëë€.
@JeffBezanson , ì°ëŠ¬ ì€ ë§ì ì¬ëë€ìŽ ì í ëì ë° íµê³ì ê°ì êž°ì 곌ì ìì Matlab ë±ì ëì íì¬ Julia륌 ì¬ì©íê³ ì¶ìŽíë€ë ê²ì êž°ìµíììì€. ìŽë€ì íë¡ê·žëë° ê³Œì ìŽ ìëë©° íìë€ì íë¡ê·žëë° ë°°ê²œìŽ ìë 겜ì°ê° ë§ìµëë€. ì°ëŠ¬ë 구조ì íë¡ê·žëë°ì ì ë íì§ ììµëë€. ê±°ì 몚ë ê²ìŽ 짧ì ì€ëí«ê³Œ ì ì ë³ìì ìížìì©í©ëë€.
ê²ë€ê° ëŽê° ëì ìžìŽë¥Œ ì²ì ì¬ì©íë ìŽì ë ëíí íì곌 ë³Žë€ íë šë íë¡ê·žëë° ì¬ìŽë¥Œ ì ì°íê² ì ííêž° ìíŽìì ëë€. ì ì ë° íšì 컚í ì€ížìì ëìŒí ìœë륌 ì¬ì©í ì ìë€ë ê²ì ê°ë ì ë²ì륌 ì§ì íë ë° ìµìí ì¬ëìê²ë ìŽë¥Œ ë°©íŽíë ìììŽë©° CSê° ìë 배겜ì íìë€ìê²ë íšì¬ ë ëì©ëë€.
ì°ëŠ¬ ì€ ë§ì ì¬ëë€ìŽ ì í ëì ë° íµê³ì ê°ì êž°ì 곌ì ìì Matlab ë±ì ëì íì¬ Julia륌 ì¬ì©íê³ ì¶ìŽíë€ë ê²ì êž°ìµíììì€. ìŽë€ì íë¡ê·žëë° ê³Œì ìŽ ìëë©° íìë€ì íë¡ê·žëë° ë°°ê²œìŽ ìë 겜ì°ê° ë§ìµëë€. ì°ëŠ¬ë 구조ì íë¡ê·žëë°ì ì ë íì§ ììµëë€. ê±°ì 몚ë ê²ìŽ 짧ì ì€ëí«ê³Œ ì ì ë³ìì ìížìì©í©ëë€.
Julia ì¬ì©ì ì€ ë§ì ì¬ëë€ì CS ë°°ê²œìŽ ì ëì ìŒë¡ 0ìŽì§ë§(ì 륌 í¬íšíì¬) ì ì í íë( í¹í íìì 겜ì°)ë ì°ëŠ¬ì ìì§í ì¬ëì ìì©íêž° ìíŽ ë ëì ë³í륌 ì구íꞰ볎ë€ë ë°°ì°ë €ë ìì§ìž ê² ê°ìµëë€.
ì§êž, ëë ë°ëì ëë ëšì§ ì¬êž°ì ë¬Žìš ìŒìŽ ìŒìŽëê³ ìëì§ì ì íë ìŽíŽë¥Œ ê°ì§ê³ ìëìŽ í¹ë³í ë³íê° ì í ë ê²ìŽëŒê³ ììíê³ ìì§ ìë€, ê·žë¬ëìŽ ì€ìí í©ë³ìŠ ìž ê²œì°ê° ìëë©Ž 곌ëíê²íë©Ž ìœê² ë¶íìíê² ìì± ìœë륌 ì못 ìííë©Ž ë ëì ê°ì ìì 륌 ë§ë€êž° ìíŽ ë³ê²œí ê°ì¹ê° ììŽ ë³Žì ëë€. ì ì ììê² ë³Žì¬ì£Œë ì ì êž° ì¬ë¡ë¥Œ ì€ìíì ë ì ì ì©í ì ìëë¡ ë¬ŒëŠ¬ ë²ì¹ì ë³ê²œí ìë ììµëë€.
ë°ëŒì ì±ë¥ìë ì 겜ì ì°ë ë¹ CS ì¬ì©ìë¡ì ëŽ ì§ë¬žì ìŽê²ìŽ Ʞ볞 ëììŒë¡ ì€ì ëë©Ž ìŽë»ê² ë§ì¹ ê² ê°ìµëê¹? 묞ì ê·žëë¡ ì°ëŠ¬ê° ì¬êž°ì ë³Žê³ ìë 묞ì (ëŽê° ìŽë¯ž ìê³ ììë)ìž ì¢ ë¥ì ìì ëê¹, ìëë©Ž ì°ëŠ¬ê° ì¢ ì¢ ë 믞ë¬í ë°©ììŒë¡ ìŽê²ì ëìê² ë§ì¹ ê°ë¥ì±ìŽ ììµëê¹?
ê·žë§í ê°ì¹ê° ìêž° ë묞ì ìœë륌 ëë¬ìžë ë²ìì ë°ëŒ ë€ë¥Žê² ëìíê² íë ê²ì ìŒë°ì ìŒë¡ ë°ëì§íì§ ìì êž°ë¥ìŽëŒë ë° ëìí©ëë€.
ìœë륌 ëíììŒë¡ ìì±íêž° ìŽë µê² ë§ë€ê³ , 첫 ë²ì§ž 룚í륌 ìì±íë ìŽë³Žìê° ëªšíží ë²ì ì§ì ê·ì¹ì ìŽíŽíëë¡ íê³ , ì ì ë²ììì ìëíì§ ìë íšììì ë¶ì¬ë£ì ìœë륌 ë§ëë ê²ì íë¡ê·žëëšžê° íšììì ë¹ ë¥ž ìœë륌 ìì±íë ë° ëììŽ ëì§ ììµëë€. Julia륌 ëíììŒë¡ ì¬ì©íêž°ê° ë ìŽë µê³ ìŽë³Žììê²ë ë ìŽë µìµëë€.
1.1ìì REPLì êž°ë³žìŽ ìë êž°ë¥ìŒë¡ ì¬ì©í ì ììµëê¹?
"unbreak me" ìµì ì Ʞ볞ê°ìŒë¡ ì€ì íë ê²ìŽ ë íëª íŽ ë³Žì ëë€. í¹í ìŽë³Žì륌 ëììŒë¡ íë ìµì ì ëì± ê·žë ìµëë€. Ʞ볞 ìµì ìŽ ìë ê²œì° ê°ì¥ íìí ì¬ëë€ì íì±íëì§ ìì(ê·žëŠ¬ê³ ìµì ìŽ ìëì§ë 몚륎ë) ì¬ëë€ìŒ ê²ì ëë€.
ì ìë REPL 몚ëë include
ed ì€í¬ëŠœížì 묎ìì í©ëê¹? ì ì ëª
ë ¹ë¬žì íê°ë REPL 몚ëê° íì±íëìëì§ ì¬ë¶ì ë°ëŒ ë¬ëŒì§ëê¹? ê·žë ë€ë©Ž IMOë 1.0 ìì ì± ìœì곌 ì충ë©ëë€.
ì°ëŠ¬ê° ìŽì ê°ì ìì
ì ìííë€ë©Ž 몚ëìŽ ìë ë°©ìì ê²°ì íë ê²ìŽ í©ëŠ¬ì ìŒ ê² ê°ìµëë€. ë°ëŒì Main
ë "ìííž ë²ì" 몚ëìŽ ëê³ êž°ë³žì ìŒë¡ ë€ë¥ž 몚ëì "íë ë²ì" 몚ëìŽ ë©ëë€.
@stevengj ì globalize
êž°ë¥ì ì¬ì©íêž° ìíŽ REPLì ìììŽ íšì¹íë ê²ìŽ ê°ë¥íì§ íìžíë ë° êŽì¬ìŽ ììê³ , ë§ì ë
žë ¥ì ë€ìŽì§ ìì ê²ìŒë¡ 볎ì
ëë€. ìì ì ì°žì¡°íììì€. ìŽê²ì Juno(ëë Core.eval
ì§ì ížì¶íë ë€ë¥ž 몚ë ê²)ììë ìëíì§ ììµëë€.
ëë ìŽê²ì ì¬ëë€ìê² ì¶ì² íì§ ìì ê²ìŽì§ë§, ë¹ ë¥Žê³ ëë¬ìŽ ë°ìŽí° ë¶ìì í ë ëìê² êœ€ ì ì©í©ëë€. íšììì REPLë¡ ìœë륌 ë³µì¬íì¬ ë¶ì¬ë£ì ì ìì ë 겜íìŽ ìê³ ì¢ ì¢ êºŒë €íë ìœë(ìŠ, ì íì)ìê²ë ë§€ì° íŒëì€ëœêž° ë묞ì (ë ëì ìê°ì ê°ì§) ì룚ì ì ë³Žê³ ì¶ìµëë€. ê·žê²ìŽíë ìŒê³Œ ê·ž ë°ëì 겜ì°ë ë§ì°¬ê°ì§ì ëë€.
julia> a = 0
0
julia> for i = 1:10
a += i
end
ERROR: UndefVarError: a not defined
Stacktrace:
[1] top-level scope at .\REPL[2]:2 [inlined]
[2] top-level scope at .\none:0
julia> using SoftGlobalScope
[ Info: Precompiling SoftGlobalScope [363c7d7e-a618-11e8-01c4-4f22c151e122]
julia> for i = 1:10
a += i
end
julia> a
55
(BTW: ìì í ì€ížë ê±°ì í ì€íží ê²ì ëë€!)
ì ìë REPL 몚ëë í¬íšë ì€í¬ëŠœížì 묎ìì í©ëê¹?
ì묎ê²ë. Ʞ볞ì ìŒë¡ ì ìì ëíí í롬íížìì ì ë ¥ë ìœëìë§ íŽë¹ë©ëë€. íìŒì 묎ìžê°ë¥Œ ëŽêž° ììíìë§ì "íë ì€ìœí" ê·ì¹ì ë°°ììŒ í©ëë€. ë°ëŒê±Žë, ìœë륌 íìŒì ë£ì ë íšì ì¬ì©ì ììíŽìŒ í©ëë€.
í롬íížë³Žë€ íìŒì ì ì ìœëì ëíŽ ë ì격í ë²ì ì§ì ê·ì¹ìŽ ìë ê²ì ìŽìì ìŽì§ ììµëë€. ê·žë¬ë Julia 1.0 ìì ì± ìœì곌 ê²°í©ë #19324ë ì°ëŠ¬ìê² ìŽìì ìž ìµì ìŽ ìë€ê³ ìê°í©ëë€.
@stevengj :
@JeffBezanson , ì°ëŠ¬ ì€ ë§ì ì¬ëë€ìŽ ì í ëì ë° íµê³ì ê°ì êž°ì 곌ì ìì Matlab ë±ì ëì íì¬ Julia륌 ì¬ì©íê³ ì¶ìŽíë€ë ê²ì êž°ìµíììì€. ìŽë€ì íë¡ê·žëë° ê³Œì ìŽ ìëë©° íìë€ì íë¡ê·žëë° ë°°ê²œìŽ ìë 겜ì°ê° ë§ìµëë€. ì°ëŠ¬ë 구조ì íë¡ê·žëë°ì ì ë íì§ ììµëë€. ê±°ì 몚ë ê²ìŽ 짧ì ì€ëí«ê³Œ ì ì ë³ìì ìížìì©í©ëë€.
Matlab/R/...ì ëí ì¬ì ë žì¶ìŽ ìë íìë€ìê² Julia륌 ì¬ì©íë 곌ì ì ê°ë¥Žì³€ë ì ë ìŽë¬í ì°ë €ì ê³µê°í©ëë€. ê·žë¬ë ëìì Julia륌 Matlab ë±ì ë첎묌ë¡ë§ ì¬ì©íë ê²ì ì€í ê°ë¥í ì ê·Œ ë°©ììŽëŒê³ ìê°íì§ ììµëë€. Discourse ë° StackOverflowì ëí ì§ë¬žìì ìììŽ ì ìŠë ë°ì ê°ìŽ ìŽë ìì íê³ ìŽíŽíêž° ìŽë €ìŽ ì±ë¥ íšì ìŒë¡ ìŽìŽì§ ì ììµëë€. Juliaê° ìŽë¬í ë€ë¥ž ìžìŽì ìŽë»ê² ë€ë¥žì§ ìŽíŽíë ë° í¬ìíë ê²ë³Žë€ íšì¬ ë ë§ì ë¹ì©ìŽ íìí ì ììµëë€("Matlabìì ìŽ ìœë륌 ë²ìíìŒë©° 10ë°° ë늌"ìŽëŒë 죌ì ì ê²ì묌 ì°žì¡°).
íµì¬ 묞ì ë 칚묵ì ì€íšëŒê³ ìê°í©ëë€. 묞ì ì첎 ë ìŽíŽíê³ ìì íêž° ìœìµëë€. ìë¡ìŽ ëìì ì ì§íë Main
ê²œê³ ë¥Œ íìíë ê²ìŽ ì¢ìµëë€(Ʞ볞ì ìŒë¡ ë¹íì±íí ì ììŽìŒ íš).
ëìê² ë í° ë¬žì ë ìžì§ë ë¶ìŒì¹ì ëë€. ìŠ, Juliaê° ìŒì ë€ë¥Žê² íë ê²ì êŽì°®ì§ë§:
for
ëžë¡ìŽ begin
ë° if
ëžë¡ê³Œ ë€ë¥Žê² ìëíë ìŽì ë 묎ìì
ëê¹? ( if
ìŽíŽë íì§ë§ ëžë¡ì [ë°ëì] ëžë¡ìŽìŽìŒ í©ëë€.).ìŽì 2ì êŽíŽìë ìŽê²ìŽ Julia륌 íëì ì¬ì©íŽ ìš(ê·žëŠ¬ê³ ìžìŽì ì ë
íë) ì°ëŠ¬ê° ìŽíŽí ì ìë ê²ë³Žë€ ë í° ë¬žì ëŒê³ ìê°í©ëë€. ëë Juliaë¡ ìœë륌 ìì±íëë¡ ëŽ ê·žë£¹ì ì€ëíë ë° íì¬ 0/7ìŽëŒê³ ë§í ì ììµëë€. ê·ž ì€ 2ê°ë ìŽ for
룚í 묞ì ë¡ ìží ê²ìŽììµëë€. ìŽ ë¬žì ë ìŽì ì ë
žì¶ëì§ ììêž° ë묞ì ì€ëª
í ì ìììµëë€. ëëšžì§ë ëŽ ì¹ŽëŠ¬ì€ë§ ë¶ì¡±ì ë¶í í ì ìë€ê³ ìê°í©ëë€.
ëŽê° ì ížíë ê²ì íšììì REPLë¡ ë¶ì¬ë£ì ìœëê° íšìì ëìŒíê² ëìíëë¡ íê³ for
룚í륌 ì¬ì©íì¬ ë°ìŽí°ë¥Œ ëíììŒë¡ ë¶ìí ë ììí ëë¡ ìííë ê²ì
ëë€. ìŠ, í¹ë³í í€ìë ììŽ ì§ìë ë ìžë¶/ì ì ë³ì륌 ë³ê²œí©ëë€.
Julia륌 Matlab ë±ì ëì²Žë¬Œë¡ ì¬ì©íë ê²ì ì€í ê°ë¥í ì ê·Œ ë°©ììŽëŒê³ ìê°íì§ ììµëë€. Discourse ë° StackOverflowì ëí ì§ë¬žìì ìììŽ ì ìŠëìë¯ìŽ, ìŽë ìì íê³ ìŽíŽíêž° ìŽë €ìŽ ì±ë¥ íšì ìŒë¡ ìŽìŽì§ ì ììŒë©° ë ë§ì ë¹ì©ì ìë°í ì ììµëë€. Juliaê° ìŽë¬í ë€ë¥ž ìžìŽì ìŽë»ê² ë€ë¥žì§ ìŽíŽíë ë° í¬ìíë ê²ë³Žë€
믞ìíì§ë§ ìŽ ì£Œì¥ì ëìê² ì°ì€êœì€ëœë€. íë¡ê·žëë°ì ê°ë¥Žì¹ë ìì ì ëíŽ ë§íë ê²ìŽ ìëëë€. ê°ëší ëíí ê³ì°ì ìí ì¥ìê° ììŒë©° CSê° ìë ìì ììë íë¡ê·žëë° ìžìŽì ì²ìë¶í° "ìêŽì€ë¬ìŽ ê³ì°êž°"ë¡ ìê°íë ê²ìŽ ìŒë°ì ì ëë€. Juliaìì ì±ë¥ 컎íší ì ê°ë¥Žì¹ë ê²ì ìì í ë€ë¥ž íë¡ìžì€ì ëë€. íì§ë§ ìŽë¯ž Julia륌 "ê³ì°êž°"ë¡ ì¬ì©íê³ ìë€ë©Ž 묞ì ê° ëì§ ììµëë€.
íìë€ìê² "ê³ì°êž°"ë¡ Matlabì ìê°íë ê²ë¶í° ììíë©Ž "ì€ì " íë¡ê·žëë°ìŒë¡ ì ííë ê²ìŽ íšì¬ ë ìŽë µìµëë€. ìëíë©Ž ê·žë€ì 첫 ë²ì§ž 볞ë¥ì 배륌 íêž° ì ì MatlabìŒë¡ ê°ë¥í í ë§ì ìŒì íë ê²ìŽê³ , ìŽ ì§ì ìì ëì ìµêŽìŽ ìêž°êž° ë묞ì ëë€. ê·žë€ì ë¿ëŠ¬ë¥Œ ëŽëŠ¬ê³ ìë¡ìŽ ìžìŽë¥Œ ë°°ì°ë ê²ì 꺌늜ëë€. ëì¡°ì ìŒë¡, Julia륌 ìêŽì€ë¬ìŽ ê³ì°êž°ë¡ ììíë€ë©Ž ë ì§ì§í íë¡ê·žëë°ì í ë ì¬ì©í ì ìë ìµì ì ë²ìê° íšì¬ ë ëìŽì§ëë€. 몚ë ê²ì "벡í°" ìì ìŒë¡ 몰ìë£ê±°ë ì ëë¡ íêž° ì ì ëì ìŒì íëë¡ ê°ìí íìê° ììµëë€.
ì í ëì 곌ì ìì Julia륌 ì¬ì©íë©Ž ì ëë€ë ë§ììŽì ê°ì? ìëë©Ž 컎íší° 곌í곌 ì í ëìíì ê°ë¥Žì¹ ì€ë¹ê° ë 겜ì°ìë§ ì¬ì©íŽìŒ í©ëê¹?
ëë @stevengj ì 묞ì (íë¡ê·žëëšžê° ìë ì¬ëìê² ê°ë¥Žì¹ë ê²ìŽ íšì¬ ë ìŽë €ì
ìŽê²ì REPLììì ëíí ëë²ê¹ ìŽ íì ìŽììŒë¡ ê³ íµì€ëœì§ ìê³ (ëë ì ê· ì¬ì©ììê² ë íŒëì€ë¬ìì§ì§ ìêž° ë묞ì) ì¢ì ì 충ìì²ëŒ ë€ëŠœëë€. ë°ë©Ž ì€í¬ëŠœížì ìŒë° ìœëë ì격í ë²ì ì§ì ê·ì¹ì ë°ëŒìŒ íê³ ìŒë¶ë¥Œ ë®ìŽì°ë ë²ê·žë¡ë¶í° ìì í©ëë€. ì°ì°í ë³ì.
ì í ëì 곌ì ìì Julia륌 ì¬ì©íë©Ž ì ëë€ë ë§ììŽì ê°ì? ìëë©Ž 컎íší° 곌í곌 ì í ëìíì ê°ë¥Žì¹ ì€ë¹ê° ë 겜ì°ìë§ ì¬ì©íŽìŒ í©ëê¹?
ë¹ì ì ëŽê° ë§í ê²ì ì못 ìŽíŽíì ì ììµëë€ (ëë ëŽê° ëª ííê² íííì§ ìììµëë€). ëë Julia륌 ì¬ì© íì¬ í¹ì ìì(ì: ëë 겜ì ëíììë€ìê² ìì¹ì ë°©ë²ì ê°ë¥Žì³€ì)ì ê°ë¥Žì¹êž° ìíŽ CS 곌ì (겜íìŽ ìì)ìŽ ìë 곌ì ì ëíŽ ìŽìŒêž°íê³ ìììµëë€.
ëŽê° ë§íë €ê³ íë ìì ì Juliaì ìžìŽ X(MatlabìŒ ì ìì) ì¬ìŽì ìŽë ì ëì ì°šìŽë¥Œ ììíë ê²ìŽ í©ëŠ¬ì ìŽëŒë ê²ì ëë€. ë°ëë¡ ìŽë¥Œ 묎ìíë©Ž 묞ì ê° ë°ìí ì ììµëë€.
ê°ìžì ìŒë¡, ì ë ìë¡ìŽ ìžìŽë¥Œ ë°°ìž ë ìŽë¬í 묞ì ì ìŒì° ì§ë©Žíë ê²ì ì íží©ëë€. ëí ì¥êž°ì ìŒë¡ ë€ë¥ž ìžìŽìì ì ì¬ì±ë³Žë€ ìžìŽ ì믞ì ëšìì±ê³Œ ìŒêŽì±ìŽ ë ì€ìíë€ê³ ìê°í©ëë€. ê·žë¬ë ëë ìŽë¬í ì ížëê° ì£ŒêŽì ìŽëŒë ê²ì ìê³ ììŒë©° í©ëŠ¬ì ìž ì¬ëë€ì ë€ë¥ž ì ížë륌 ê°ì§ ì ììµëë€.
(ë±ë¡ëì§ ìì) íší€ì§ë¥Œ ë§ë€ììµëë€. https://github.com/stevengj/SoftGlobalScope.jl
ìŽê²ìŽ í©ëŠ¬ì ìŒë¡ 볎ìžë€ë©Ž ê³ìíŽì íší€ì§ë¥Œ ë±ë¡í ë€ì IJuliaìì Ʞ볞ì ìŒë¡ ì¬ì©í ì ììµëë€(ìë§ë Juno ë±ì PR ì ì¶).
ëŽê° ë§íë €ê³ íë ìì ì Juliaì ìžìŽ X(MatlabìŒ ì ìì) ê°ì ìŒì ìì€ì ì°šìŽë¥Œ êž°ëíë ê²ìŽ í©ëŠ¬ì ìŽëŒë ê²ì ëë€.
íì€í. ëŽê° "Matlab ëì Julia륌 ì¬ì©íëŒ"ê³ ë§í ë ëŽê° ê·žë€ìê² Juliaìì Matlab 구묞ì ê°ë¥Žì¹ë €ê³ íë ê²ë ìëê³ í¹ë³í ìŽì Matlab ì¬ì©ì륌 ëììŒë¡ íë ê²ë ìëëë€.
ëë ìŽë¬í 묞ì ì ìŒì° ì§ë©Žíë ê²ì ì íží©ëë€.
Matlab ì첎ìì ì°šìŽì ì êŽí ê²ìŽ ìëëë€. ë ì ë§ìŽ ìëëŒ ë¡ì»¬ ë²ì ë êžë¡ë²ê³Œì ì ì©ì±ì ëíŽ ìŽìŒêž°íì§ ìì global
ê·žë€ìŽìì ìœë륌 ë¶ì¬ ì ì ë¶ìììí í€ìë ëŽê° ìë CS íì, ëë ì²ìì ìì 룚í륌 ìì± ì²ì êž°ë¥ì REPLì ìœì
íì¬ ëíììŒë¡ ìëí©ëë€. ëì 룚í륌 ì¬ì©íì¬ íííë €ë ìíì ì§ì€íê³ ì¶ìµëë€.
ì¬êž° ìë ë구ë ë¶ëë¬ìŽ ëíí ë²ìê° Matlab ì¬ì©ìê° êž°ëíë ê²ìŽêž° ë묞ì ë
Œìíì§ ììµëë€. "ë²ì"ëŒë ìµìíì§ ìì ê°ë
ì ëíŽ êžžê² ê° íì í ë묞ì ì°ëŠ¬ê° ìŽë¥Œ 죌ì¥íë ê² ì
ëë€ . (ê·žëŠ¬ê³ ìë šë ì¬ì©ìëŒë ëíììŒë¡ ìì
í ë global
í€ìë륌 ê°ì ë¡ ì¶ê°íë ê²ì ë€ì ë¶íží©ëë€.)
ì¬êž°ì ìžêžëì§ ìì ë ë€ë¥ž ìì ì¬íì ëšìí 'for'ê° ë²ì ëžë¡ì ì ìíë ê²ì ì€ì§íë ê²ì ëë€(êž°ë¥ë§ ì¬ì©íê³ ì ë²ì륌 ìì±íš).
@vtjnash , ëë Julia 2.0 ìŽì ì ì°ëŠ¬ê° í ì ìë ìŒì ìŽ ë Œì륌 ì§ì€íê³ ì¶ìµëë€. ëíí 몚ëê° ë€ë¥Žê² ìëíë ê²ì ììë°©ížìŒ ë¿ìŽëŒë ë° ëìíë©° ëª ë ìì ë²ì ì§ì ê·ì¹ì ë³ê²œíë ê²ì ì§ì§íê² ê³ ë €íŽìŒ í©ëë€.
ì¢ì ì , ìŽê²ë import Future.scope
ð
(ìŽ ëªšë/ë€ìì€íìŽì€/íë íšê³Œë ìŽë¯ž ììœ/ì¡Žì¬íë€ê³ ìê°í©ëë€)
ì¬êž°ìì ìêž°ìí€ë¯ìŽ, ë³ê²œ ì¬íì íŽë¹ 몚ëìì ìŽì ì íê°ë ë€ë¥ž í목ì êŽê³ììŽ ìœëê° ëªšë ì ì ë²ì í겜ìì ëìŒíê² ëìíëë¡ íë ê²ìŽììµëë€. ìŽ ë³ê²œ ìŽì ìë ëìŒí ìœë륌 ë ë² ì€ííê±°ë íìŒìì ìŽëíì¬ ìì í ë€ë¥ž ëµë³(ë€ë¥ž ë²ì í ë¹ìŒë¡ ìží 결곌)ì ì»ì ì ìììµëë€.
ìŽ ë³ê²œ ìŽì ìë ëìŒí ìœë륌 ë ë² ì€ííê±°ë íìŒìì ìŽëíì¬ ìì í ë€ë¥ž ëµë³(ë€ë¥ž ë²ì í ë¹ìŒë¡ ìží 결곌)ì ì»ì ì ìììµëë€.
ì€ì ë¡ (0) ê·žê²ì ëíŽ ëŽê° 볞 ë¶ë§ì ìë íì¬ íëì ëíŽ ë³Žê² ë (ê·žëŠ¬ê³ ìŽë¯žë³Žê³ ìë) ë¶ë§ê³Œ íŒëì ìì ë¹íŽ íì€í ì€ìŽë€ ê²ì ëë€.
ìŽ ë³ê²œ ìŽì ìë ëìŒí ìœë륌 ë ë² ì€ííì¬ ìì í ë€ë¥ž ìëµ(ë€ë¥ž ë²ì í ë¹ìŒë¡ ìží 결곌)ì ì»ì ì ìììµëë€.
ìë ìœëìì a
ê° ì²« ë²ì§žì ë ë²ì§ž for
룚í ì¬ìŽìì ë³ê²œëë€ë ê²ì ì믞í©ëê¹? ì ìê°ìë ë²ê·žê° ìëëŒ ììë ëìì
ëë€.
a = 0
for i = 1:5
a += 1
end
for i = 1:5
a += 1
end
ì ìë REPL 몚ëë í¬íšë ì€í¬ëŠœížì 묎ìì í©ëê¹?
@mauro3 @stevengj êž°ë¥ ì¶ê°(ì: exec("path/to/script.jl")
)ê° ë§ìŽë ë²ì ë²íë¡ ìíë ì ìë€ê³ ìê°í©ëê¹? exec
'ed ì€í¬ëŠœížìì exec
'ing ë€ë¥ž íìŒì ê²œê³ í ë€ì include
륌 ì¬ì©íëë¡ ì ëíêž° ìíŽ ìŒë¶ êµì¡íì ë©ìì§ë¥Œ ê±°êž°ì ë£ì ìë ììµëë€.
ëŽê° ìŽì ¯ë°€ì ìŽ ë¬žì ì ëíŽ ëšžëŠ¬ë¥Œ ìžë§€ê³ (ë€ì í ë²) ìµì ì íë ë°©ì¹šìŽ ë¬Žììžì§ ìì ëŽë €ê³ ë žë ¥íë©Žì ëª ê°ì§ ìê°ì ì ììµëë€. ê²°ë¡ ì ìì§ë§ ìŽê²ìŽ 묞ì 륌 ì죌 ëª ííê² ì ìíë€ê³ ìê°í©ëë€. ìŽ ë¬žì ì ëíŽ ëª ë ëì ìê°íŽ 볞 결곌 "ìŽìì ìž ì룚ì "ìŽ ìë€ê³ ìê°í©ëë€. ìŽê²ì ì°šì ì± ë§ ìë 묞ì ì€ íëìŒ ì ììµëë€.
ì¬ëë€ì ìì§íê² ì ì ë²ì륌 ì§ì ë²ì륌 ëë¬ìžë ì¬ë¯žìë ì¢ ë¥ë¡ ëŽ ëë€. ìŽê²ìŽ ì ì ë²ìê° Julia 0.6 ë° ìŽì ë²ì ììì ê°ìŽ ìëí ìŽì ì ëë€.
ê·žë¬ë 죌ì ì°šìŽì ì ë€ì곌 ê°ìµëë€.
ê²ë€ê°, ì ì ë²ìë ì¢ ì¢ êœ€ êžžêž° ë묞ì(ì¬ë¬ íìŒì ì죌 íŒì ž ìì§ë ìì) ííìì ìë¯žê° ë€ë¥ž ííììŒë¡ë¶í° ììì 거늬ì ìì¡Žíë ê²ì "ì거늬ìì ìŒì€ì€í ëì" íšê³ŒìŽë¯ë¡ ë§€ì° ë°ëì§íì§ ììµëë€. .
ìŽ ë§ì§ë§ êŽì°°ì ì ì ë²ììì ë ê°ì§ ë€ë¥ž ë²ì ì for 룚íê° ë€ë¥Žê² ëìíë ê²ìŽ 묞ì ê° ëë ìŽì 륌 볎ì¬ì€ëë€.
# file1.jl
for i = 1:5
a += 1
end
# file2.jl
a = 1
md5-f03fb9fa19e36e95f6b80b96bac9811e
```jl
# main.jl
include("file1.jl")
include("file2.jl")
include("file3.jl")
ëí file1.jl
ì file3.jl
ì ëìŒíë©° ë§€ë² ë€ë¥ž ì믞ì ëììŒë¡ ëìŒí íìŒì ë ë² í¬íšíì¬ ìì 륌 ëšìíí ì ììµëë€.
ë ë€ë¥ž 묞ì ë ì¥êž° ì€í REPL ìžì ì ëë€. ìšëŒìž ìŽëê°ìì ìì 륌 ìëíìê² ìµëê¹? ìì ê° for 룚í ëë ì ì¬í 구ì±ìì ì§ì ë³ìì ì¬ì©íë ê²ê³Œ ê°ì ìŽëŠì ì ì ë³ìê° ììŽì ì€íší©ëë€. ë°ëŒì ìë¡ìŽ íëìŽ íŒëì ìŒìŒí¬ ì ìë ì ìŒí íëìŽëŒë ê°ë ì íì€í ì ííì§ ììµëë€. ëë ìë¡ìŽ íëìŽ REPLì ì¬ì©ì± 묞ì ëŒë ë° ëìíì§ë§ ëí륌 ë¶ëëœê² íê³ ë€ë¥ž 쪜ì ì¬êž°ìì ëª ííê² ì ìíê³ ì¶ìµëë€.
repl 묞ì 륌 ë€ë£šì§ë ìì§ë§ ìµìí ë¹ëíììŒë¡ ìžìŽë¥Œ ê°ë¥Žì¹ ë êµíì ìž ëª©ì ìŒë¡ ì ì©í ê²ìŽëŒë ëì ìì ì ì: í¬ížëìì ìíí ì ìë ê²ì²ëŒ "íë¡ê·žëš"ìŽëŒë ë©ìž ëžë¡ì ì ìíììì€. ìì "let...end"ì ëìŒíì§ë§ ë ìì°ì€ë¬ìŽ íêž°ë²ì ì¬ì©í©ëë€.
íë¡ê·žëš í
ì€íž
...
ë
ë²ì ìžë¶ ì¬íìŒë¡ ë€ìŽê°ì§ ìê³ ìžìŽë¥Œ ê°ë¥Žì¹ ì ììŒë©° ê²°êµìë ê·ž ì ì ëíŽìë§ ë Œìí ì ììµëë€.
ë ë€ë¥ž 묞ì ë ì¥êž° ì€í REPL ìžì ì ëë€. ìšëŒìž ìŽëê°ìì ìì 륌 ìëíìê² ìµëê¹? ìì ê° for 룚í ëë ì ì¬í 구ì±ìì ì§ì ë³ìì ì¬ì©íë ê²ê³Œ ê°ì ìŽëŠì ì ì ë³ìê° ììŽì ì€íší©ëë€.
íê° ë ì¬ì©ìë€ìŽ ìŽì ëíŽ ìŒë§ë ë§ì ë©ìŒë§ 늬ì€íž ë¶ë§ ì¬í곌 github 묞ì 륌 ì êž°íìµëê¹? ì ë¡, ëŽ ê³ì°ìŒë¡. ìì? ìë§ë ìŽ ëììŽ ê·Œë³žì ìŒë¡ ì¬ëë€ìê²
ë°ëŒì ìë¡ìŽ íëìŽ íŒëì ìŒìŒí¬ ì ìë ì ìŒí íëìŽëŒë ê°ë ì íì€í ì ííì§ ììµëë€.
ëë ìŽê²ìŽ ì못ë ëë±ì±ìŽëŒê³ ìê°í©ëë€. ì¬êž° ìë ì ì¬ì ìž íŒë ìì€ì í° ì°šìŽê° ììµëë€. ì€ëŠ¬ì 0.6, ëë ìŽì íììŒë¡ ì륌 ë€ìŽ ì€ëª
í ììë€ : "ì,ìŽ ë£šíì ë°ëŒ ë¬ëŒ ì°žì¡° a
ë¹ì ìŽ ì¬êž° ë³ê²œíë." Julia 1.0ììë ì íëìí ê°ì륌 ë£ë ì€ì í ë²ë ë€ìŽë³ž ì ìŽ ìë íìë€ ììì 믞ì€í°ëŠ¬íê² global
í€ìë륌 ì
ë ¥íŽìŒ íë ê²œì° ìŽë»ê² íŽìŒ í ì§ ìì§í ê±±ì ìŽ ë©ëë€. CS ì믞ìì "ë²ì".
ëª ë ìì ë²ì ì§ì ê·ì¹ì ë³ê²œíë ê²ì ì§ì§íê² ê³ ë €íŽìŒ í©ëë€.
ì ëì ìŒë¡íì§. 룚í ë²ìì v0.2 ìŽì ìžê³(#1571 ë° #330 ì°žì¡°)ë¡ ëìê°ìê² ìµëê¹?
ì°ëŠ¬ë ì€ì ë¡ ìœë륌 í ì€ì© REPLì ë³µì¬íì¬ ë¶ì¬ë£ë êž°ë¥ì ìì í ì§ìí ì ìŽ ììµëë€. ê·žëì ì°ëŠ¬ë ìŽê²ì ìŒì í ì ìë êž°íë¡ ë³Œ ì ììµëë€. í¹í for
룚íììë "ìë"íì§ë§ ëŽë¶ íšìììë ìëíì§ ìììµëë€.
x = 0
f(y) = (x=y)
íšì ëŽìì f
ë 첫 ë²ì§ž ì€ìì x
륌 ë³ê²œí©ëë€. REPLììë ê·žë ì§ ììµëë€. ê·žë¬ë SoftGlobalScope.jlìì ìŽì ê°ì ë³íì ì¬ì©íë©Ž ìëí ì ììµëë€. ë¬Œë¡ ë
늜 ì€íí íšì ì ì륌 ë¶ì¬ë£ë ìì
ìŽ ìëíì§ ìêž° ë묞ì Ʞ볞ì ìŒë¡ ìŽ êž°ë¥ì ìŒê³ ì¶ì§ ìì ê²ì
ëë€. ê°ì¥ 뚌ì ë ì€ë¥Žë ê²ì ëŒìžë³ íšì ëë²ê¹
ì ìí REPL 몚ëì
ëë€.
ì§ì¬ìŒë¡ v0.2 ìŽì ì ìžê³ë¡ ëìê°ê³ ì¶ìµëê¹?
ìëì, 0.6ì ìžê³ë¡ ëìê°ê³ ì¶ìµëë€. ð
ëë ë€ì곌 ê°ìŽ ë ë§ìŽ ìëµíë€ê³ ìê°í©ëë€.
ì¬êž°ì ìžêžëì§ ìì ë ë€ë¥ž ìì ì¬íì 'for'ê° ë²ì ëžë¡ì ì ìíì§ ìëë¡ íë ê²ì ëë€.
ì°ëŠ¬ë ì€ì ë¡ ìœë륌 í ì€ì© REPLì ë³µì¬íì¬ ë¶ì¬ë£ë êž°ë¥ì ìì í ì§ìí ì ìŽ ììµëë€. ê·žëì ì°ëŠ¬ë ìŽê²ì ìŒì í ì ìë êž°íë¡ ë³Œ ì ììµëë€.
ìŽ ê°ì ì ë§€ì° ê°ì¬íë©° ì¬ì© ì¬ë¡ì ëíŽ ì ë§ ëììŽ ë ê²ì ëë€. ëŽ êŽì ìì ìŽê²ì ìžìŽì ë²ì ì§ì ê·ì¹ì ì§ì ë³ê²œíë ê²ë³Žë€ REPLì ê°ë¥í í ì ì©íê² ë§ëë ê²ì êŽí ê²ì ëë€.
ìŠ, ìŽ ë¬žì ì ëíŽ ë ë§ìŽ ìê°í ìë¡ REPLìŽ ìííŽìŒ íë ìì ì ëíŽ (ê°ìžì ìŒë¡) ê°ì§ê³ ìë ì충ëë 견íŽë¥Œ ë³Žê² ë©ëë€.
구첎ì ìŒë¡ ë§íë©Ž, REPLìŽ íšì 볞묞ì ë²ì ì§ì ê·ì¹ê³Œ ìŒì¹íë€ë©Ž ë§€ì° ì¢ìí ê²ì ëë€. ìŠ, ë³ìë ì ìì ìŽêž°ë³Žë€ë ì§ìì ìŽë©° íšììì ì§ì ìœë륌 ë³µì¬íì¬ ë¶ì¬ë£ì ì ììŒë©° ìëí ê²ìì ì ì ììµëë€. ëë ìì§í 구íìŽ íìì let-block wrap(ìŽì ì ìžêžíë¯ìŽ)곌 ê°ì ê²ìŽëŒê³ ììí©ëë€.
julia> b = a + 1
ë¡ ë³ì ì€
let a = _vars[:a]::Float64 # extract the variables used from the backing store
# Code from the REPL
b = a + 1
# Save assigned variables back to the backing store
_vars[:b] = b
end
ì ëë¡(ìŠ, ìì ìŽ ë¬Žìì íê³ ìëì§ ìë ì¬ëì ìíŽ) ìë£ëë©Ž êž°ì¡Ž REPLì ë¹íŽ ë§ì ìŽì ìŽ ìì ê²ìŽëŒê³ ìê°í©ëë€. 1. ëíí ë°ìŽí° ë¶ì/ê³ì°ìŽ í¬íšë ìŽì ìí¬íë¡ê° ìëí©ëë€. 2. Ʞ볞 ìëµìŽ "ì ì ë³ìë¡ ë²€ì¹ë§í¹ì ì€ì§"íë Discourseì ê²ìë¬ŒìŽ íšì¬ ì ìµëë€. 몚ë ê²ìŽ ì§ìì ìŽë©° ë¹ ë¥Žêž°ë¥Œ ë°ëëë€! :) 3. íšì 볞묞ìì ë³µì¬ ë° ë¶ì¬ë£êž°ê° ììëë¡ ìëí©ëë€. 4. ë°±ì
ì ì¥ìê° ìŒì¢
ì Dictìž ê²œì° workspace()
ì ê°ì êž°ë¥ì ê°ëší©ëë€. ê·žë¥ ì§ì°ìžì. 5. ì ììŽ ëª
ìì ìŒë¡ ë©ëë€. í¹ë³í ì ììŽ ëëë¡ ìì²íì§ ìë í ì¬ë¬Œì ì§ìì ì
ëë€. ìŽê²ì ëŽ êŽì ìì 볌 ë í° ì¥ì ì
ëë€. ì ë 묵ìì ìŒë¡ ì ìì ë§ëë ê²ì ì¢ìíì§ ììµëë€. ì죌 ì¬ìí ë§ì§ë§ ìì (ê·žëŠ¬ê³ ëë ìŽê²ì ì¶ê°íꞰ륌 죌ì í©ëë€!), ìŽê²ì Matlabì ëì곌 ìŒì¹íì¬ ì¬ëë€ìŽ ë ìœê² ì íí ì ìëë¡ í©ëë€. Matlab REPLìì ëª
ìì ìŒë¡ ì ììŒë¡ 죌ììŽ ì§ì ëì§ ìë í 몚ë ë³ìë ë¡ì»¬ìž ê²ì²ëŒ 볎ì
ëë€.
ëª ìê° ì ê¹ì§ë§ íŽë ìŽ ìŽìŒêž°ë ëìê² íë¥íê² ë€ë žë€. ê·žë¬ë íšìì ëí Jeffì ì견 ìŽíì ë 늜 ì€íí íšì ì ìì ë¶ì¬ë£êž°ì ëíŽ ìê°íê³ íšì ì ìê° ì ì ë²ìì ë€ìŽê°ìŒ íêž° ë묞ì ìŽ ì ê·Œ ë°©ììŽ êž°ë³žì ìŒë¡ ìŽë¥Œ ë°©ì§íë ë°©ë²ì ëíŽ ìê°íìµëë€. íì§ë§ ê·žë€ì ë¡ì»¬ ë²ì (ëŽë¶ êž°ë¥)ë¡ ê°ì 묎ìì 목ì ìŒë¡íë€ë©Ž? ë ê°ì§ ê°ë¥ì±ì ëª ííê² íë ì ë³Žê° ììµëë€. ë¡ì»¬ ë²ìì ì ì ë²ìê° ìë ë ê°ì§ REPL 몚ëê° íìí ê² ê°ìµëë€. íížìŒë¡ë ë§€ì° íŒëì€ë¬ìž ì ìì§ë§(Discourse ê²ì묌ì ììíŽ ë³Žìžì...), ë€ë¥ž íížìŒë¡ë ë§€ì° ì ì©í ì ììµëë€. (ë REPL 몚ë륌 ì¬ì©íë ê²ë ìë¡ìŽ êž°ë¥ì ëì íë ê²ìŽêž° ë묞ì 묞ì ê° ëì§ ììµëë€. :) )
SoftGlobalScope.jl
ì ì€ê° ì§ìŒë¡ ê°ë ê²ìŽ ê°ì¥ íŒëì€ë¬ìŽ ì 충ììŽ ë ì ìì§ë§ ëŽ ê±±ì ì ìŽê²ìŽ êž°ìµíŽìŒ í ë ë€ë¥ž ê·ì¹ìŽëŒë ê²ì
ëë€(REPLììë ìëíì§ë§ ëŽ íšì 볞묞/ì ì ë²ìììë ìëíì§ ììŒë©° ë°ëë¡).
ꞎ ê²ì묌ì ëíŽ ì¬ê³Œíì§ë§ ìŽê²ìŽ ì¬ì©ì±ì ì€ìíë€ê³ ìê°í©ëë€.
íê° ë ì¬ì©ìë€ìŽ ìŽì ëíŽ ìŒë§ë ë§ì ë©ìŒë§ 늬ì€íž ë¶ë§ ì¬í곌 github 묞ì 륌 ì êž°íìµëê¹? ì ë¡, ëŽ ê³ì°ìŒë¡. ìì? ìë§ë ìŽ ëììŽ ê·Œë³žì ìŒë¡ ì¬ëë€ìê² ëëŒìŽ ìŒìŽ ìëêž° ëë¬žìŒ ê²ì ëë€. ì ì ë²ììì ìì íë ê²œì° ì ì ìíì ìì¡Ží©ëë€.
í , ìŽê±° ì ë§ ì²Žê³ì ìŒë¡ ì°êµ¬íì 걎ê°ì? ëë ê·žê²ì ëì¹ ê²ìì í늌ìë€. ê·žëŒìë ë¶êµ¬íê³ ìŽê²ìŽ ìŽ ëììŽ ë²ê·žë ììì¹ ëª»í 결곌ì ììžìŽ ìëì ì믞íì§ë ììµëë€. ì¬ì©ìê° ììëž í ì¬ë°ë¥ž ëììŒë¡ ìžìëìŽ ë¬žì /ë¶ë§ ì êž°íì§ ìììµëë€.
Julia 1.0ììë ì íëìí ê°ì륌 íë ëì€ì ë¶ê°ì¬ìíê² ì ì í€ìë륌 ì ë ¥íŽìŒ íë ê²œì° ìŽë»ê² íŽìŒ í ì§ ìì§í ê±±ì ìŽ ë©ëë€.
ìŽ ë¬žì ì ê³µê°í©ëë€. íìë€ìê² ìœì€ì íìí ëª ê°ì§ ê°ëší íë¡ê·žëë°ì ê°ë¥Žì³€ì ë ì ë ìŒë°ì ìŒë¡ íšìì ìœë륌 ëííê³ function
ë° end
륌 죌ì ì²ëŠ¬íê³ ì€ííë ê² ì¬ìŽë¥Œ ìë€ ê°ë€ íëŒê³ ì ìíìµëë€. êžë¡ë² ë²ììì, ê·žëì ê·žë€ì ë¬Žìš ìŒìŽ ìŒìŽëê³ ìëì§ ì¡°ì¬í ì ììµëë€. ìŽê²ì Juliaì ë¹ì ëë²ê¹
ìžíëŒ ë¶ì¡±ì ê±°ì 볎ìíìµëë€.
ìŽ ì ê·Œ ë°©ìì ë ìŽì ì€í ê°ë¥íì§ ìì ê² ê°ìµëë€. ê·žë¬ë ìŽìšë ê·žê²ìŽ ì ë§ë¡ ì¬ë°ë¥ž ë°©ë²ìžì§ ê¶êžíë©° ê·žëì ì¬ë¬ ê°ì§ê° ë§ìŽ ê°ì ëììµëë€(#265 ìì , Revise.jl ë° ìµê·Œ Rebugger.j ë ìí¬íë¡/ëë²ê¹ ì ìë¹í ê°ì íìµëë€).
ìŽ ë¬žì ë ìë šë ì¬ì©ì륌 í¬ê² ꎎë¡íì§ ìë ê²ìŒë¡ 볎ìŽë©°, 죌ì êŽì¬ì¬ë êµì¡ í겜ì íŒëì ëë€. ëë ìì§ ìŽê²ì ì§ì ì€ííŽë³Žì§ ììì§ë§, ëì ì ì°ëŠ¬ì êµìë²ì ì ì©í ì ìëì§ ê¶êží©ëë€. ì륌 ë€ìŽ 룚í ì ì íšì륌 ëì íê³ ì ì ë²ììì 룚í륌 íŒíììì€. ìŽê²ë€ì ìŽìšë ì¢ì ì€íìŒì ìììŽë©° íìë€ìê² ëììŽ ë ê²ì ëë€.
ê°ëší ì°žê³ ì¬í: REPLì ì ì ë²ì륌 í¹ì ìŒìŽì€ë¡ ì§ì íë©Ž íšì ìíìŒë¡ ìœë륌 ë³µì¬íì¬ ë¶ì¬ë£ì ì ìì§ë§ ë€ë¥ž 몚ëì ì ì ë²ìë¡ ë³µì¬íì¬ ë¶ì¬ë£ì ì ììµëë€.
ì륌 ë€ìŽ 룚í ì ì êž°ë¥ì ëì íê³ ì ì ë²ììì 룚í륌 íŒíë ê²ê³Œ ê°ìŽ êµì¡ì ëí ì ê·Œ ë°©ìì ì¡°ì í ì ìëì§ ê¶êží©ëë€.
ìŽê²ì íë¡ê·žëë° êµì¡ì ì€ì ì ëì§ ìë ìì ììë ìì í ë¹ì€ì©ì ì ëë€. ëíììŒë¡ ì¬ì©í ì ìê±°ë 뚌ì 몚ë êž°ë¥ì ìí íšì륌 ìì±íŽìŒ íë ê²œì° ìì ìì Julia륌 ì¬ì©íì§ ìë ê²ìŽ ì¢ìµëë€.
(ê·žëŠ¬ê³ ëšìí êµì¡ì ìž ê²ìŽ ìëëë€. êžë¡ë² ë²ìì 룚íë ëíí ìì ì ì ì© í©ëë€. ê·žëŠ¬ê³ ì¬ëë€ìŽ êž°ì 컎íší ì ìí ëì ìžìŽë¥Œ ì¢ìíë 죌ë ìŽì ì€ íëë ëíí íìì ìí ìì€ì ëë€. 몚ë ìœë©ìŽ ì±ë¥ ì§í¥ì ìŽì§ë ììµëë€.)
ì¬ëë€ìŽ ì€ëë "ìííž/íë ë²ì" 구ë¶ì ëíŽ íŒëì€ëœê±°ë ë¶ííë ìë ëì ìì ê°ì ì€ë ëì 묞ì ê° ìììµëë€. ì¬ì€ìŽ ìëë€. ëë ê·žë€ ì€ ìŒë¶ë¥Œ íí€ì¹ ì ììì§ë§ @stevengj ëìŽ ì£Œë³ì
@StefanKarpinski , ì ë í¹í ì ì 룚íê° ì ì ìíì ìì¡Žíë€ê³ ë¶ííë ì¬ëë€ì ìžêžíê³ ììµëë€. ëë ìŽê²ìŽ ëì íëìŽëŒê³ ë¶ííë ì¬ëì êž°ìµíì§ ëª»íë©° ìŽê²ì ëí ìŽë€ ìë ì°Ÿì ì ììµëë€.
ëë ì¬ëë€ìŽ ìžì ìŽëì í ë¹ìŽ ìë¡ìŽ ë³ì륌 ì ìíëì§ì ëíŽ íŒëì€ë¬ìíë€ë ë° ëìíì§ë§ ìŒë°ì ìŒë¡ ë€ë¥ž ë°©í¥ìŽììµëë€. ê·žë€ì ë¡ì»¬ ë²ìê° (ê·ž ë°ëê° ìëëŒ) ë ì ìì ìŒë¡ ìëíꞰ륌 ìíê±°ë begin
ì¬ìŽì 구ë³ìŽ ìꞰ륌 ìíìµëë€ let
. IIRCìì ë¶ë§ì ì ì 룚íìì ì ì ë³ìì í ë¹íë ê²ìŽ ì ìì ìì íë ëëŒìŽ ë¶ìì©ìŽ ìë€ë ê²ìŽ ìëëë€.
ë²ì ì§ì ì ì 첎 묞ì ë ìë¡ìŽ ì¬ì©ììê² íŒëì 죌며 ììŒë¡ë ê·žëŽ ê²ì ëë€. ê·žë¬ë íŒëì€ë¬ìŽ ë¶ë¶ì ì ì ë³ì ìŽëŠì í ë¹íë ê²ìŽ ì ì ìíì ìí¥ì 믞ì¹ë 겜ì°ê° ìëëë€. íì¬ì íëì ìŽê²ì ë ëìê² ë§ëë ê²ìŽ ìëëŒ ë ëìê² ë§ëëë€.
@StefanKarpinski : ìŽì ìë ìííž/íë ë²ìì ëí íŒëìŽ (ì¬ëë€ìŽ ììì¹ ëª»í 결곌륌 ì»ë) ì€ì©ì ìž ê²ë³Žë€ë (맀ëŽìŒì ìœë ì¬ëë€ì) ìŽë¡ ì ìž ì±ê²©ì ë ì¬êž° ì ê²ì ê²°ê³Œê° ìŽê²ì ë·ë°ì¹šíë ê²ì ëë€. ì¬êž° ìì íëì ë°ë ì륌 ì°Ÿì
ë°ë©Žì ìŽ ìë¡ìŽ ëìì 맀ëŽìŒì ìœì ë ì¬ëë€ì íŒëì€ëœê² íì§ ìê³ REPLì ì¬ì©í ë íŒëì ì€ ê²ì ëë€. í늌ììŽ íìê° ë ëìë€.
SoftGlobalScope.jl ì ìŽì ë±ë¡ë íší€ì§ì ëë€. ëŽ ìëë ì ìŽë ìŽë² íêž°ì IJuliaì ëíŽ êž°ë³žì ìŒë¡ íì±í(ìµížìì)íë ê²ì ëë€.
@mauro3 , "ë°ë ì"ì¡°ì°šë ìííž ë²ìê° ìë íë ë²ìë¡ íŒëëë ì¬ëì êŽí ê²ì ëë€. 0.7ìì ë ë§ì ë²ì륌 "íë"íê² ë§ëë ê²ì ìŽë¬í ì¢ ë¥ì íŒëì ë ë§ìŽ ìŒìŒí¬ ê²ìŽ íì€í©ëë€.
IJuliaë Ʞ볞ì ìŒë¡ ë³ì륌 ë¡ì»¬ë¡ í ì ìë í¥ë¯žë¡ìŽ ê°ë¥ì±ì ê°ì§ê³ ììì ì§ì íê³ ì¶ìµëë€. ìŠ, ëšìŒ ëžë¡ìì ìŽ ìì ì ìííë©Ž ë€ì곌 ê°ìŽ ìëí©ëë€.
t = 0
for i = 1:n
t += i
end
t
... ê·žëŠ¬ê³ t
ë ìŽ íê° ëžë¡ ëŽììë§ ë³Œ ì ììµëë€. ìžë¶ìì 볌 ì ìëë¡ íë €ë©Ž ë€ìì ìííŽìŒ í©ëë€.
global t = 0
for i = 1:n
global t += i
end
t
ëí ëžë¡ìŽ 몚ëìŽ ìë íìŒìž Juliaì ëíŽìë ì ì¬í ì ê·Œ ë°©ìì ê³ ë €íìµëë€. ìŠ, ìµìì ë²ììì t = 0
륌 ìííë©Ž ì ì ë³ìê° ìë íìŒ ë¡ì»¬ ë³ìê° ìì±ë©ëë€. ì§ì í ì ì ë³ì륌 ì ìžíë €ë©Ž global t = 0
륌 ìì±íŽìŒ í©ëë€. ê·žë¬ë©Ž 몚ë ì 첎ìì 볌 ì ììµëë€. ìŽì©ë©Ž ë묎 ìŽìí ìë ìì§ë§ ìë
ëì ëìê² ì¬ë¬ ë² ë°ìíìµëë€.
IJuliaë Ʞ볞ì ìŒë¡ ë³ì륌 ë¡ì»¬ do ëžë¡ìŒë¡ ë§ëë í¥ë¯žë¡ìŽ ê°ë¥ì±ì ê°ì§ê³ ììµëë€.
@StefanKarpinski , ëë ìŽê²ìŽ íšì¬ ë íŒëì€ëœê³ ë
žížë¶ìŽ ìŒë°ì ìŒë¡ ì¬ì©ëë ë°©ì곌 ë°ëê° ë ê²ìŽëŒê³ ìê°í©ëë€. ëìŒí ë³ìê° ì¬ë¬ ì
ìì ì¬ì©/ìì ëë ê²ìŽ ìŒë°ì ìŽë¯ë¡ 몚ë ì
ê° ë³ìì ëíŽ global
í€ìë륌 ì구íë ê²ì ëìê² ììíêž° ìŽë €ìŽ ìŒì
ëë€. 묞ì ë³Žë€ ë²ì ê°ë
ì ëí ë ë§ì ë
Œìê° íìí ê²ì
ëë€. for
룚íì íšê» ì¬êž°ìì ë
Œìíìµëë€.
ì°ëŠ¬ 몚ëê° ëìíë í --- ì°ëŠ¬ê° ìê°íë ê²ì²ëŒ --- ìŽê²ìŽ ëë¶ë¶ ëë ì ì ìŒë¡ ìíž ìì©ì 묞ì ëŒê³ ìê°íë€ë©Ž ììŒë¡ ëìê° ì ìë ë°©ë²ìŽ ììµëë€. REPLìì ìŽê²ì í¹ë³í 겜ì°(IJuliaì ëíŽ ìíëë ê²ì²ëŒ)ë¡ ì§ì íë ê²œì° ì ìŒí ëì 겜ì°ë REPLìì 묎ìžê°ë¥Œ ê°ë°í ë€ì ìŽë¥Œ ìµìì ì€í¬ëŠœíž ìœëë¡ ìŽëíë ê²ì ëë€. í늌ììŽ ê·žê²ìŽ êž°ë¥ì ëì íŽìŒ íë ì§ì ìŽë¯ë¡ ê·žë ê² ëìì§ ìë€ê³ ìê°í©ëë€. REPL곌 íšì 볞묞 ì¬ìŽì ìœë륌 ë³µì¬íì¬ ë¶ì¬ë£ë ê²ìŽ (ëë¶ë¶) ìëí ê²ì ëë€. ìŽ ì ëë©Ž 충ë¶í ê²ì ëë€.
ê·žë° ë€ì REPL ë³ì륌 REPLì ë¡ì»¬ë¡ ì§ì íì¬ êµ¬ë³ì ì¶ê°ë¡ ì ë¹í/ëª
ííê² íë ìµì
ë ììµëë€. ìŠ, Main.x
ë¡ ì¬ì©í ì ìë ìŒë° ì ì ë³ìê° ìëëë€. ìŽê²ì @StefanKarpinski ê° ììì ì ìí ê²ê³Œ ë§€ì° ì ì¬íì§ë§ 몚ë ì
ë ¥ ëžë¡/ì
ìì ê³µì ë©ëë€.
ì€ì©ì ìž êŽì ìì REPLìì ìŽ "ê³ ì "ì ì»ë ê²ì
êµì¡/ë¹íë¡ê·žëëšž ì¬ì©ììê²ë§ ì€ìí©ëë€. ìŽ íëë
REPL(ë¶ë¶ì ë³µì¬íì¬ ë¶ì¬ë£êž°)ì íµíŽ ëíí ëë²ê¹
ì ìíí©ëë€.
ë¹ì€ì©ì . ìŽ ëë²ê¹
몚ëê° ëëë¡ ë ëì ì ììµëë€(ì¬ì§ìŽ
íë¥í ëë²ê±° ë°) 겜í ë§ì íë¡ê·žëëšžìê²ë (ì¢
ì¢
ëì ìžìŽë¥Œ ì ížíë ìŽì ). ë¬Œë¡ ê²œíììê²
íë¡ê·žëëšžë ì í ì¬íìž ê²ìŽ 묞ì ê° ëì§ ììµëë€. ìŽë³Ž ì¬ì©ìì 겜ì°
Ʞ볞ê°ìŽ ë°ëì§í©ëë€.
@StefanKarpinski
ìì§í íë¡ê·žëëšžë¡ì, ëë ì€ì ë¡ ë³Žë ê²ìŽ ê·žë ê² ì못ë ê²ìŽ 묎ììžì§ ìì§ ëª»í©ëë€.
í¹í ëì ìììì ë¡ì»¬ ë²ì륌 ëë¬ìžë ì¬ë¯žìë ì¢
ë¥ì ì ì ë²ì
ìžìŽ. ëë 컎íìŒë¬ì êŽì ìì ê·žê²ìŽ ìëëŒë ê²ì ìŽíŽí©ëë€.
(Juliaìì) ë°ëì ì ííì§ë§ íë¥íê³ ìœê³ ì ì©í 몚ëžì
ëë€.
(ìì§í) íë¡ê·žë뚞륌 ìíŽ. (ëë ëí ê·žê²ìŽ ì€ì ë¡ ê·žë° ììŒë¡ 구íëìì ìë ìë€ê³ ìê°í©ëë€.
ìŒë¶ ìžìŽ).
Juliaë ëí ê·žê²ì íë¡ê·žëëšžìê² ê·žë ê² ì ìíë ê² ê°ìµëë€.
ë€ì íšì íšìë "ì ìëì§ ìì" ì€ë¥ë¥Œ ì ê³µí©ëë€.
for 룚í ìì =1ìŽ ììŒë©Ž ìíëì§ ììµëë€.
êž°ë¥ ê²ì¬()
ëë = 1:10
ììŽ=ì+ë
ë
a=1
@볎ì¬ì€
ë
ëŽê° ìì í ì€íŽíì§ ìë í, "
ìžë¶ ì§ì ë³ìë ìëì ìŒë¡ ì¡Žì¬íë©°, ììì ìì¡Žíì§ ììµëë€.
ìžë¶ ë¡ì»¬ ë²ììì ííìì ì¶í ëë ì€í".
ëë "ì거늬ìì ìŒì€ì€í íë"ì íŒíë ê²ì ë§€ì° ëìíë©°,
íšì/ížì¶ ì€íìì ì ì ì¬ì©ì ëí ëª
ìì ì ì ì íž
ìì€ìŽë©° ê°ìžì ìŒë¡ íìŒìì ë¡ëíë ê²ê³Œ ê°ì ê²ì ê°ê³ ì¶ìµëë€.
ì첎 ë²ì ë° ì ì ë³ì ì¬ì©ì ëí ëª
ìì ì ìê° íìí©ëë€.
룚í ìì€ìì ëìê²ë ìœê° ë©ëŠ¬ ê°ê³ ììµëë€.
ì ì/묞맥ì ìŒë°ì ìŒë¡ ë§€ì° ê°ê¹ìµëë€.
3ê°ì íìŒ ìì ë ìœê° ìžìì ì
ëë€(ììë "not
ì ìëš" ì€ë¥): ìŒë°ì ìŒë¡ ìŽêž° ì ì륌 ëìŒí ìì¹ì ë£ìµëë€.
íìŒ.
ì¬êž°ìë ì€ì ìŒì€ì€í ìíìŽ ììµëë€(ê·žëŠ¬ê³ ëë ê·žê²ì ë¬Œë žìµëë€.
ë€ë¥ž ìžìŽ)ìì í¬íšì ì ì ë²ììì ì€íëë¯ë¡
ë€ë¥ž ë³ì륌 ë°©íŽí ì ìë ì ì ë³ì륌 ì€ìë¡ ì ìíê³ ììµëë€.
ìíž. ê·žë¬ë 룚íìì ì ìì ì¬ì©íŽìŒ íë ê²ì íŽê²° ë°©ë²ìŽ ìëëë€.
ìŽ ë¬žì .
ì¥êž° ì€í REPL ìžì
ì wrt:
íì¬ ëìì ë§€ì° ëë¬Œê³ ë°ê²¬íêž° ì¬ìŽ ì€ë¥ 몚ë륌 ë첎í©ëë€.
REPLìì ìšëŒìž ìì 륌 ì€ííêž° ìíŽ(ë¹ì ì ë³µì¬/ë¶ì¬ë£êž°ë¥Œ ëì³€ìµëë€)
룚í ì ì ë³ìì ìŽêž° ì ì ë° ìŽë¯ž
ìŽì í목ìì ì ìì ìŒë¡ ì ìë ëìŒí ë³ì)
êž°ë¥ì ìŒë¶ìž ê²œì° ìšëŒìž ìì 륌 ì¬ë°ë¥Žê² ì€íí ì ìì
(몚ë ê³³ì ì ìì ì¶ê°íì§ ìê³ ) 묞ì 륌 íŽê²°íì§ ëª»íë 겜ì°
ê·žë ì§ ìì(globalìŽ ìŽë¯ž ìšëŒìž ìœëì ìë 겜ì°ìë ê³ì ì¬ì©í©ëë€.
ìŽë¯ž ì¡Žì¬íë ì ì ë³ìì ì못ë ê°)
ëë ìŽê²ì ë ìŒì° ì¡°ì íìŽìŒ íì§ë§, ì ì ì°ë €í íì 몚ë ê²ìŽ ì ë ê² ê°ìµëë€.
ì°ëŠ¬ë ì€ì ë¡ ìœë륌 í ì€ì© REPLì ë³µì¬íì¬ ë¶ì¬ë£ë êž°ë¥ì ì벜íê² ì§ìí ì ìŽ ììµëë€. ê°ì¥ 뚌ì ë ì€ë¥Žë ê²ì ì€ ëšì íšì ëë²ê¹ ì ìí REPL 몚ëì ëë€.
ì€ì ë¡ Rebugger(ì íí íŽë¹)ë 0.7ì ì¬ì© ì€ëš ë²ìê° ë¶ì¡±íê³ 0.6ìì ìëíëë¡ ë§ë€ ì ìêž° ë묞ì 1.0ìì ì ëë¡ ìëí©ëë€. ê·žë¬ë SoftGlobalScope.jlìŽ ìŽë¥Œ ìë°íì§ ìë ê² ê°ë€ë ê²ì íìží ì ììŽ êž°ì©ëë€. ì륌 ë€ìŽ show([1,2,4])
ëíŽ ì¶©ë¶í ê¹ìŽ ë€ìŽê°ë©Ž ë€ì곌 ê°ìŽ ë©ëë€.
show_delim_array(io::IO, itr::Union{SimpleVector, AbstractArray}, op, delim, cl, delim_one) in Base at show.jl:649
io = IOContext(Base.TTY(RawFD(0x0000000d) open, 0 bytes waiting))
itr = [1, 2, 4]
op = [
delim = ,
cl = ]
delim_one = false
i1 = 1
l = 3
rebug> eval(softscope(Main, :(<strong i="10">@eval</strong> Base let (io, itr, op, delim, cl, delim_one, i1, l) = Main.Rebugger.getstored("bbf69398-aac5-11e8-1427-0158b103a88c")
begin
print(io, op)
if !(show_circular(io, itr))
recur_io = IOContext(io, :SHOWN_SET => itr)
if !(haskey(io, :compact))
recur_io = IOContext(recur_io, :compact => true)
end
first = true
i = i1
if l >= i1
while true
if !(isassigned(itr, i))
print(io, undef_ref_str)
else
x = itr[i]
show(recur_io, x)
end
i += 1
if i > l
delim_one && (first && print(io, delim))
break
end
first = false
print(io, delim)
print(io, ' ')
end
end
end
print(io, cl)
end
end)))
[1, 2, 4]
ë°ëŒì 1.0ìì ì ìëí©ëë€( softscope
ëë 믞í¬íš). 0.7ìì ìŽê²ì íê°íë©Ž( softscope
ì 묎ì êŽê³ììŽ) ë€ìì ì»ì ì ììµëë€.
â Warning: Deprecated syntax `implicit assignment to global variable `first``.
â Use `global first` instead.
â @ none:0
â Warning: Deprecated syntax `implicit assignment to global variable `first``.
â Use `global first` instead.
â @ none:0
[ERROR: invalid redefinition of constant first
Stacktrace:
[1] top-level scope at ./REBUG:9 [inlined]
[2] top-level scope at ./none:0
[3] eval(::Module, ::Any) at ./boot.jl:319
[4] top-level scope at none:0
[5] eval at ./boot.jl:319 [inlined]
[6] eval(::Expr) at ./client.jl:399
[7] top-level scope at none:0
ë°ëŒì 0.7/1.0ì íì€í í ëšê³ ë ë°ì íìŒë©° softscope
ê° ì€ìí êž°ë¥ì ìììí€ì§ ìê³ í¹ì ìì
ì ë ìœê² ë§ë ë€ë©Ž ì ë§ ì¢ìµëë€.
ë°ëŒì ê°ì¥ í° êŽì¬ì¬ë ë€ë¥ž íší€ì§ë¥Œ í±í¹íì§ ìê³ ìŽë¥Œ ì ì íê² ê°ë¡ì±ë ë°©ë²ì ëë€(https://github.com/stevengj/SoftGlobalScope.jl/issues/2).
@timholy , SoftScopeë 맀í¬ë¡ ížì¶ì ìžì륌 걎ëëŠ¬ì§ ììŒë¯ë¡(맀í¬ë¡ê° ë€ì ìì±íë ë°©ë²ì ì ì ìêž° ë묞ì) :(<strong i="6">@eval</strong> ...)
ê° ë³Žížë©ëë€.
"ìžì§ ì¬ë¶ì 몚ìëë ê² ê°ìµëë€.
ìžë¶ ì§ì ë³ìë ìëì ìŒë¡ ì¡Žì¬íë©°, ììì ìì¡Žíì§ ììµëë€.
ìžë¶ ë¡ì»¬ ë²ììì ííìì ì¶í ëë ì€í".
(ìžë¶) ì§ì ë³ì a
ìŽ ìì§ë§ ìì§ í ë¹ëì§ ìììµëë€. 룚íê° ìœêž° ì ì a
ì í ë¹íë €ê³ ìëíë€ë©Ž í ë¹ì ìžë¶ììë 볌 ì ììµëë€.
ìŒë°ì ìŒë¡ ë³ì ë°ìžë©ì ë§ë€ê³ ê°ì í ë¹íë ê²ì ë³ëì ëšê³ì ëë€.
ìŽì ëí íìëŒìžì 묎ìì ëê¹? ì¬ì©ì ížìì±ìŽ í¬ê² í¥ìë ê² ê°ìµëë€. ê·žëŠ¬ê³ Juliaê° 1.0ì ì¶ìí ìŽ "ì€ìí" ìêž°ì ìŽ ìì ì ìµëí 빚늬 ë°ê³ (ìì Jeffê° ì ìí ë°©ììŒë¡) ì Julia ë²ì ìŽë REPL ë²ì ì í귞륌 ì§ì íë ê²ìŽ ì 늬í ê² ê°ìµëë€. (ëë íì€í ìŽê²ì ê³ ì¹ ì ìêž° ë묞ììŽ ìëœ ìì ì견ì ëíŽ ì ê°ì€ëœê² ìê°í©ëë€!)
@JeffBezanson
ëë ìŽê²ìŽ ì¬ì€ìŽì§ë§(구í/컎íìŒë¬ì 겜ì°) ìì§í ì€ëŠ¬ì íë¡ê·žëëšžë ë ëšìí ê°ë
ì 몚ëžê³Œ ë€ë¥ž íëì 볌 ì ìë€ê³ 죌ì¥íë €ê³ íìµëë€(ë³ìë ì ìëë ìê°ë¶í° ì¡Žì¬íêž° ììí©ëë€). ë¶ííë ë¹ì ìŽ ë§ìµëë€. ë€ì ìœëë ì€ë¥ë¥Œ ì ê³µíì§ ìì§ë§ ëì a=2륌 ìëµíë©Ž ì€ë¥ê° ë°ìí©ëë€.
êž°ë¥ ê²ì¬()
ëë = 1:10
a=1
ë
println(a)
a=2
ë
ë¶ííë ì€ëª
íê² ìµëë€. (ìŽì ì 컎íìŒë ìžìŽë¡ ìì
í ì ìŽ ìêž° ë묞ì) ëìì ìŽíŽí ì ìì§ë§ ì¬ì í íŒëì€ëœê³ ììì¹ ëª»í ê²ì
ëë€. ì€í¬ëŠœí
겜íìŽ ìê±°ë íë¡ê·žëë°ìŽ ì²ììž ì¬ëìê²ë ìŒë§ë ëì ìŒì
ëê¹? ëí ëìì 볎ì¬ì£Œë ìœë륌 ì°Ÿììµëë€. ì ì©í ìì© íë¡ê·žëšìŽ 볎ìŽì§ ììµëë€.
REPL:
ëë ë°©êž REPLìì ë²ì륌 "ì ì"ìŒë¡ ë€ì ë³ê²œíë ê²ìŽ ì°ì ììê° ëë€ë ê²ì ë íì íê² ëììµëë€. ê·žê²ì 깚ë«ë ë° ìê°ìŽ 걞늜ëë€. Julia륌 ìŽë¯ž ꜀ ë§ìŽ íë¡ì°íê³ ìê³ , 묞ì ì ëí ìŽ ì€ë ëë íë¡ì°íê³ ìë€ë ì ì ê°ìí ë, ì ë ìŽê²ì ìŒì€í íŒëŒê³ ë¶ë¥Žê³ ì¶ìµëë€. ìžìŽë¥Œ í
ì€ížíë newbee(Juliaìê²)ë 묞ì 륌 íŽê²°íê³ ê·žë¥ í¬êž°íììì€.
@jeffbezanson 곌 ì ë 몚ë ì€ë«ëì êž°ë€ë €ìš íŽê° ì€ì ëë€(ìŽ êžì ìœìŒë©Ž ì ë©ëë€). ì°ëŠ¬ë ìŒì£ŒìŒ ì ë íì 묎ìì íŽìŒ í ì§ ììëŒ ì ììµëë€.
@derijkp , íŒëë°±ì ëìŽ íê°ëì§ë§ ë²ì ì§ì ê·ì¹ì êŽë²ìí í ë¡ ìŽë ìì ì ìí ê²ìŽ ìëëë€. í ìŽëžì ìë ì ìŒí ê²ì í¹ë³í 겜ì°ì ëíí íê°ì ëë€. SoftGlobalScope íší€ì§ë ìŽë¯ž ì°ìí ì€íì 구íìŽë©° Baseì íŽë¹ ë¶ë¶ì ë§ë€ê³ REPLìì ì¬ì©íë 묞ì ìŒ ì ììµëë€.
@derijkp 짧ì ëëµì ë³ìì ë²ìê° ìŒë¶ ëžë¡ 구ì±(ì: íšì ëë 룚íì 볞묞)ì íŽë¹íë ê²œì° ë ìœë€ë ê²ì ëë€. ê·íì ì ìì ë°ë¥Žë©Ž ë³ìì ë²ìë ëžë¡ì ìŒë¶ íì ì§í©ìŽ ë ê²ìŽë©°, ìŽë ê¶ê·¹ì ìŒë¡ ë ë³µì¡íê³ íŒëì€ëœë€ê³ ìê°í©ëë€. --- ë³ìì ë²ìì íŽë¹íë 구묞 íìì ê°ëŠ¬í¬ ì ììµëë€.
ì, ëë ìŽê²ìŽ ìŽë€ ì¬ëë€ì ì§êŽì ë§ì§ ìë ê²ìŽëŒê³ 믿ì ì ììµëë€. ê·žë¬ë í¹ì ìì ê¹ì§ë ìžìŽ ì¬ì©ì ì²ì 10ë¶ ëìë§ ìµì íí ì ììµëë€. ì§ì§ ì§ë¬žì ê·žê²ìŽ ìëíë ë°©ìì ê°ë¥Žì¹ê³ ë°°ì°ë ê²ìŽ ìŒë§ë ìŽë €ìŽì§, ê·žëŠ¬ê³ ì¥êž°ì ìŒë¡ ìŽë€ ëììžìŽ ìê°ì ì ìœí ê²ìžê°ì ëë€(ìžìŽë¥Œ ë ëšìíê² ë§ë€ê³ ë구륌 ê°ë°íêž° ìœê² íë ë±)?
(REPLì ëì ìì ì ëí ìì ë§ì ë¶ë¶ì ëì)
ìŽ stackoverflow ì§ë¬žìŒë¡ ìŽìŽì§ì§ ìë ë°©ììŒë¡ REPLì ë³Žê³ ì¶ìµëë€.
ê·žëŠ¬ê³ ë§ì ìë¡ìŽ ëìŽ Julia륌 ë°ëŒë³Žë ë§íŒ ë¹ ë¥Žë©Ž ë¹ ë¥Œìë¡ ì¢ìµëë€.
ëìí©ëë€... ëí ë²ì ì§ì ê·ì¹ìŽ ë°ëì ë³ê²œëìŽìë ì ëë€ê³ ìê°í©ëë€. 몚ë ëíí ìží°íìŽì€(ì: REPL, Jupyter ë° Juno 컚ížë¡€ ì ë ¥)ë§ ë³ê²œëìŽìŒ í©ëë€.
ìŽê²ì ìë¡ìŽ ê·ì¹ì ë°°ì°ë ìŽë³Žìì ëí ê²ìŽ ìëëë€. ìœë ì¡°ê°ì ë³µì¬íì¬ REPL, jupyter ë±ì ê·žëŠ¬ê³ íšìì ë¶ì¬ë£ì ì ìë€ë©Ž ì€êž íë¡ê·žëëšžìê²ë í° ê³šì¹«ê±°ëŠ¬ì ëë€.
ë¬Œë¡ , ëë ë€ë¥ž í¬ì€í°ìë ëìí©ëë€. ìŽë³Žìë íšì ëŽìì 볎ë ìœë ì¡°ê°ì ê°ì ž ìì ì€í¬ëŠœížì I륌 ë³µì¬íê³ íšì ëŽë¶ìì ë³µì¬í ë ëìŒí ëììŽ ìì ë ìì í íŒëì€ë¬ìí©ëë€. , juno, repl ë° jupyterìì. ëìŒí 묞ì ë¡ ìŽìŽì§ë 100ê°ì ì€í êµí ì§ë¬žìŽ ììµëë€. ì€êž íë¡ê·žëëšžë let
ëžë¡ ë±ìŒë¡ ê°ìžë 몚ë ì¢
ë¥ì ì첎 ì룚ì
ì ì¬ì©íì¬ ìí©ì ëì± íŒëì€ëœê² í©ëë€.
ëìŒí 묞ì ë¡ ìŽìŽì§ë 100ê°ì ì€í êµí ì§ë¬žìŽ ììµëë€. ì€êž íë¡ê·žëëšžë
let
ëžë¡ ë±ìŒë¡ ê°ìžë 몚ë ì¢ ë¥ì ì첎 ì룚ì ì ì¬ì©íì¬ ìí©ì ëì± íŒëì€ëœê² í©ëë€.
ê°ë¥í ìë ìì§ë§ ìŽ ëšê³ìì ìŽê²ì ê°ì€ì ì ëë€(ëí ì°ê²°ë ì§ë¬žì OPë ë²ì ì§ì ê·ì¹ì ëí 귌거륌 묻ë ê²ìŽ ìëëŒ íŒëì ìŒìŒí€ê³ ìì).
ëí ëë ìŽì ëíŽ ì°ë €íë 몚ë ì¬ëì êµì¡ 겜íì ì¡Žì€íì§ë§ ìŽê²ìŽ êµì€ìì í° ë¬žì ë¡ íëª ëëì§ ì¬ë¶ë ìê°ìŽ ë§íŽì€ ê²ì ëë€.
ì§ë¬žìë ê·žê²ì ëíŽ íŒëì€ë¬ì í ê² ê°ìµëë€. "ìŽê²ìŽ julia ì¬ì©ì륌 ììíë ë° ì§êŽì ìžì§ ê¶êží©ëë€. ì ìê²ë ì§êŽì ìŽì§ ìììµëë€..."
ì§ë¬žìë ê·žê²ì ëíŽ íŒëì€ë¬ìíë ê² ê°ìµëë€:
ìŽê²ì ë²ìì ëìì€ë¥Œ ìŽíŽí ë§íŒ íë¡ê·žëë° ìžìŽì ëíŽ ì¶©ë¶í ìê³ ìë ì¬ëìŽëŒë ê²ì ë§í ê²ë ììµëë€. ìŽë¬í 죌ì ì ëíŽ ìì í 묎ì§íê³ ëìì€ë¥Œ ìŽíŽíë ë° ì¶©ë¶í ìê°ì í¬ìíì§ ìì 몚ë matlab ì í ì¬ì©ìë ìŽë»ìµëê¹?
ê°ë¥íì§ë§ í ëšê³ìì ìŽê²ì ê°ì€ì ëë€.
ëë ìŽë¯ž stackoverflowìì ìŽì êŽë šë ì¬ë¬ ì§ë¬žì ëµíëë°, ëë¶ë¶ì ì ê· ì¬ì©ììŽë©°, ì€ìíììë íšì¬ ë ë§ìµëë€(ìŽì ë§ì§ë§ ì§ë¬žì Matlab ì¬ì©ìê° ìŽê²ì ì ëë€ê³ 볞 ê²ì ëë€).
ëìŒí 묞ì ë¡ ìŽìŽì§ë 100ê°ì ì€í êµí ì§ë¬žìŽ ììµëë€.
ëŽ "ì¬ê° ìê°"ì scope
, scoping
ë° global-variables
í귞륌 SE ì§ë¬žì ì¶ê°íìµëë€. ìê°ìŽ ììŽì ê·žë§ëë ê²ìŽì§ ìê°ìŽ ë¶ì¡±íŽìê° ìëëë€.
ë¶ë¥ë¥Œ í¬íší ë§ì ë
Œì í ê²°ë¡ : ì°ëŠ¬ë SoftGlobalScope
ëŒìžì ë°ëŒ Baseì 묎ìžê°ë¥Œ í¬íšíê³ REPL ë° êž°í 몚ë ëíí íê° ì»ší
ì€ížìì ì¬ì©í ê²ì
ëë€. @JeffBezanson ì ìŽê²ìŽ 구íëë ë°©ìì ì€ì ë¡ ìŽì ì ìííž ì€ìœíê° êµ¬íë ë°©ì곌 볞ì§ì ìŒë¡ ëìŒíë¯ë¡ ìŽë ì ëë ìì í ìíì íê³ ìë€ê³ ì§ì íìµëë€. ì°šìŽì ì ìŽì 몚ëìŽë ì€í¬ëŠœížìë ë²ì ëììŽ ìê³ REPL곌 ì ì¬í 컚í
ì€ížììë§ ìë€ë ê²ì
ëë€. ëë ëí ìì€ ì¬ìì±ìŒë¡ìì _ì€ëª
_ìííž ì€ìœíê° íë ì€ìœíì ìííž ì€ìœí륌 구ë³íë ê²ë³Žë€ ë ëª
ííë€ê³ ìê°í©ëë€.
ìŽ ë ì§ì ì ìœê° 몚ìëë ê²ì²ëŒ 볎ìŽêž° ë묞ì ìœê° íŒëì€ëœìµëë€.
REPL ë° êž°í 몚ë ëíí íê° ì»ší ì€ížìì ì¬ì©
[...] ì€í¬ëŠœížìë ë²ì ëììŽ ììŒë©° REPL곌 ì ì¬í 컚í ì€ížììë§ ê°ë¥í©ëë€.
ìŽê²ì Main
몚ëì ëë¡ë ìííž ë²ì(ì: REPL í롬ííž)ì ëë¡ë íë ë²ì(ì julia -L script.jl
)ê° ììì ì믞í©ëê¹? Main
íì ìííž ë²ìê° ìë€ê³ ë§íë ê²ìŽ ìŽì¹ì ë§ì§ ììµëê¹? ê·žëŠ¬ê³ ëªšëì using SoftGlobalScope
ê¹ì§ ìííž ì€ìœíì ìµížìží ì ììµëê¹?
(ëŽ ìê°ì) ë²ì ì§ì ê·ì¹ì ìŽì ë²ì 곌 ížíëì§ ìêž° ë묞ì ì€í¬ëŠœížìì ë³ê²œí ì ììµëë€. ìŠ, 1.0ì©ìŒë¡ ìì±ë ìœëë 몚ë 1.* ë²ì ìì ì€íëë€ë ìœìì 깚ëšëŠŽ ì ììµëë€. REPLì ë²ì ì§ì ì ëí ëìŒí 묞ì ê° ì€í¬ëŠœížìë ì ì©ëë€ë ê²ì ë§ìµëë€(ìì§í ì¬ì©ìë ì€í¬ëŠœížë¡ ì€íí ë ìœëê° ì ëë¡ ìëíì§ ìë ìŽì 륌 ìì í ìì€íš). 죌ì ë¹ížíì± ììŽ ìŽ ë¬žì 륌 íŽê²°/겜ê°íë ë°©ë²ì julia cmdlineì softscope(ëë ëì)륌 ì¬ì©íë ìµì
ì ì¶ê°íë ê²ì
ëë€(ì: julia -f programfile). ë§ëë€.
ëë ëí ëª ê°ì§ ì¥ì ìŽ ìì ì ìë ìíížì€ìœíì ëí ì ì¬ì ìž ëìì ëŽ
ëë€(ëš, ëë ìë§ë ëšì ì ê°ê³Œíê³ ìì ê²ì
ëë€): íìŒ(ížì¶ë ì€í¬ëŠœíž)ìŽ íì ì첎 ë¡ì»¬ ë²ì륌 ëì
íë€ë©Ž ìŽë»ê² ë ê¹ì: ë²ì ì§ì ê·ì¹ì êž°ë¥, ê·žëŠ¬ê³ ë§ì ì¬ì©ìì êž°ëì íšê». ëí ìë¡ìŽ ì¬ì©ìì ëí ë§ì ì±ë¥ ì±
ììŽ ì ê±°ë©ëë€.
ë ìŽì ë¶íìí ì ì(ì ìì ëª
ìì ìŒë¡ ì ìíŽìŒ íš) ë° ìœëê° ì»ŽíìŒë ì ìì
(íšìì 몚ë ê²ì ë£ê³ ì ìì ì¬ì©íì§ ììŒë €ê³ ëª ë²ìŽë ë§íŽìŒ íìµëê¹?)
ëë ìŽê²ì ë§ ì¹ê³ ìì§í ë§íŽì ìì í ë¹í©íìµëë€. ì ìë ë€ë¥ž ìŽë€ ìžìŽë¡ë 볞 ì ìŽ ìììµëë€. ëë ìí©ìŽ ìì ëë©Ž ì¬íŽ íë°ì ì°ëŠ¬ ëíìì ê³ êž R ì¬ì©ì륌 ìí Julia ìµì
ì ëì
í ê³íìŽë©°, ì íìë€ì REPLìì 묎ììë¡ í목ì ì
ë ¥íêž° ììíë 0ìŒì°šì ìŽ ê°ì¢ë¥Œ ë£ê² ë ê²ì
ëë€. ê·žëŠ¬ê³ for
룚íê° if
묞곌 ë€ë¥Žê² ëìíë€ë ì¬ì€ì ìì²ì ìŒë¶ì 묞ì§ë¥Žì§ë§ ë²ì ì§ì ìž¡ë©Žìì ë
ŒëŠ¬ì ìŒ ì ììµëë€. íšì ëŽë¶ì ë²ìë ì묌í íìë€ìŽ ìŽíŽíëë¡ íêž°ìë 충ë¶í ìŽë µìµëë€. REPLìì / ì€í¬ëŠœížìì / for 룚íìì / if 묞ìì _ìžìíꞎ íì§ë§_ ëì ëë ë¶ìŒì¹ë¥Œ ì€ëª
íŽìŒ íë€ë ììŽëìŽ(ìëíë©Ž ê·žê²ìŽ ì°ëŠ¬ê° ë§íë ê²ìŽêž° ë묞ì
ëë€. ìœ ì¬êž°) ì§êµ¬ìì ë€ë¥ž 몚ë ìžìŽì ë€ë¥ž ë°©ììŒë¡ ë륌 ë§€ì° ì¬íê² ë§ëëë€.
ëë ìŽì ë²ì 곌ì ížíì± ìœìì ìŽíŽíì§ë§ _ì§êµ¬ìì 몚ë ë¹ CS ì¬ì©ì(ê·žëŠ¬ê³ ëŽê° ìì¬íë ëë¶ë¶ì CS ì¬ì©ì)ê° ììí ëë¡_ ìŽ ìì ì ìííë ê²ì ìŽì ë²ì 곌ì ížíì± ë¬žì ëŒêž°ë³Žë€ë ë²ê·ž ìì ì²ëŒ 볎ì ëë€. 몚ë ë²ê·žê° ììí ì¬ìì°ëë€ë ì¬ì€ì ìê³ ê³ì šëì? REPL ìì ì ë¶ëª í íìì ìŽë¯ë¡ ìŽê²ì ì ìíë ê²ì ì¢ì§ë§ REPLì ì€í¬ëŠœížë¥Œ ë³µì¬í ì ììŒë©° ëìŒí ëììŽ ìë 묞ì ë§íŒ ëìê±°ë ë ëë¹ ë³ŽìŒ ê²ìŒë¡ ììí ì ìë€ê³ ì€ëª íŽìŒ í©ëë€.
ì ë°, ìŽê²ì ë²ê·ž ìì ìŒë¡ ì·šêžíê³ ì€í¬ëŠœížì REPLë¡ ížìíë ê²ì ëíŽ ìê°íììì€. "ìŽì " ëììŒë¡ ì ííë ì€ìì¹ê° ìëëŒë 1.0.1ìì ê°ë¥í í 빚늬 ìííììì€.
ì€ëŠ¬ì륌 ë°°ì°ë €ê³ íë ëë£ë ë°©êž ìŽ ë¬žì ì ë¶ëªì³€ìµëë€. 첫 ë²ì§ž ëšê³ìì ì 첎 ì ì ë ì§ì ë³ì륌 ì€ëª íë ê²ì ìŽìì ìŽì§ ììµëë€...
1.0 ìì ì± ê³ìœì 깚ëšëŠŽ ê²ìŽêž° ë묞ì ìŽê²ì "ë²ê·ž ìì "ìŒë¡ ì·šêžíë ê²ì 칎ëì ìë€ê³ ìê°íì§ ììµëë€. ê·žë¬ë julia -i
(ì: "ëíí" 몚ë)ë¡ ì€íëë ì€í¬ëŠœížì softscope륌 ì¬ì©íë ê²ìŽ í©ëŠ¬ì ìŒë¡ 볎ì
ëë€.
(ìŠ, --softscope={yes|no}
íëê·žê° ìê³ êž°ë³žê°ì isinteractive
ì
ëë€.)
ì€í¬ëŠœíž 몚ë ì íì ê³ ë €íŽìŒ í©ëë€.
ê·ž 묞ì ì ëíŽ ëªšë "ì€í¬ëŠœíž", ìŠ julia foo.jl
ëíŽ êž°ë³žì ìŒë¡ --softscope=yes
ë¡ ì€ì íê³ ëªšë ë° include
ì ëíŽ "íë" ë²ì ì§ì ê·ì¹ë§ ìŒë ê²ì ì ê² ë¯žì¹ ìŒìŽ ìëëë€.
ê·ž 묞ì ì ëíŽ ëªšë "ì€í¬ëŠœíž"ì ëíŽ --softscope=yes륌 Ʞ볞ê°ìŒë¡ ì€ì íë ê²ì ì ê² ë¯žì¹ ìŒìŽ ìëëë€.
ì ê². ì§ì§íê² ê³ ë €íŽìŒ í ë ë€ë¥ž ì¬ëì Junoì
ëë€. ê·ž ì¬ëë€ìŽ ê² êž°ìµ <shift-enter>
ëí í ê°ë°ì í ììë ìì ì ìœë륌 íµíŽ (í¹í íê· í
ì€íž ìì
ì í ë) ë€ì ëì€ì ê°ì íìŒì ì€íí ì ìëë¡ êž°ëí©ëë€. ìœëê° @testset
ì ìëì§ ì¬ë¶ê° ì€ìíŽìŒ í©ëê¹(ë²ì륌 ëì
í ì ìë€ê³ ìê°í©ëë€)? ëìŒí í
ì€ížê° @testset
ìì ë³ê²œëê³ Atom íµí©ì ì¬ì©íì§ ìì ë ë³ê²œëê³ ] test
륌 ìííë ê²ê³Œ ìŒì¹íì§ ìë ê²œì° ì¬ì©ììê² ë§€ì° íŒëì€ë¬ìž ê²ì
ëë€.
ëŽê° 볎Ʞì ê°ì¥ ì¢ì íŽê²°ì±
ì íë ì€ìœíê° ëšìí ìµížìž ë°©ììŽëŒë ê²ì
ëë€. ë€ë¥ž 몚ë ì¬ì©ë²(ì€í¬ëŠœíž ëŽ include
í¬íš)ì ë¬ëŠ¬ ë§íì§ ìë í softscope
륌 ì¬ì©í©ëë€. .
ì§êµ¬ìì ë€ë¥ž 몚ë ìžìŽì ë€ë¥ž
몚ë ë³ì륌 ìê°íêž° ìíŽ var x = 0
륌 ìì±íìê² ìµëê¹? ê·žê²ì ëí ìŽê²ì "ìì "íê³ ë€ë¥ž ìžìŽì ë¹ì·í©ëë€.
ì°ëŠ¬ë 몚ë ë²ê·žê° ììí ì¬íë ê²ìŽëŒê³ ë§íë ê²ìŽ ìëëë€.
ìŽê²ìŽ ìëíë ë°©ìì ìëëë€. íì¬ ëìì ë²ê·žëŒê³ ë¶ë¥Žë ê²ë§ìŒë¡ë ìíë ìžìŽë¥Œ ë³ê²œí ì ììµëë€.
ëë ìŽê²ì ìí ëª ë ¹ì€ ìµì ìŽ ììŽìŒ íë€ê³ ìê°íì§ ììµëë€. ê·žë° ë€ì ì€ëŠ¬ì ìœëì 몚ë ë¶ë¶ìë 죌ììŽë ì¬ì©í ìµì ì ìë €ì£Œë ëŽì©ìŽ ììŽìŒ í©ëë€. ìì€ íìŒì ìŽë€ ì¢ ë¥ì íì ì§ì묞ì ì¡°êž ë ëì ê²ìŽì§ë§ ì¬ì í ê³ ì ê·ì¹ì ê°ë ê²ìŽ ë ì¢ìµëë€. ì륌 ë€ìŽ 몚ë ëŽë¶ì íë ì€ìœíë§ ìë¯žê° ìì ì ììµëë€.
êµì€ìì ì¬ëë€ìŽ ë³Žê³ ìë ì¡°ìŠ, íì€í 늬, ëíìŽì íŒíë ë° ì ì©í ì ìë ìŽì ëí ì€ëª ì ë€ì ì ê³µíë €ê³ í©ëë€.
"
Juliaìë ì§ì ë³ìì ì ì ë³ìì ë ê°ì§ ì¢
ë¥ê° ììµëë€. REPLìŽë ìµìì ìì€ìì ëì
í ë³ìë ì ì ë³ìì
ëë€. íšì ë° ë£ší ëŽë¶ì ëì
ë ë³ìë ë¡ì»¬ì
ëë€. íë¡ê·žëšìì ì ì ë³ì륌 ì
ë°ìŽížíë ê²ì ìŒë°ì ìŒë¡ ì¢ì§ ììŒë¯ë¡ 룚í ëë íšì ëŽë¶ì ìê³ ì ìì ì
ë°ìŽížíë €ë ê²œì° global
ì ìžì ë€ì ìì±íì¬ ìŽì ëíŽ ëª
ìì ìŽìŽìŒ í©ëë€.
"
ìë§ë ê°ì ë ì ììµëë€. ì ì íìí©ëë€. ëë ë¹ì ìŽ ìŽë€ ì¢ ë¥ì ì€ëª ë íìë¡ íì§ ìëë€ë ê²ì ìëë€. ëë ê·žê²ì ìŽíŽíë€. ê·žë¬ë ê·žê²ì ëìê² ê·žë ê² ëìì§ ìì ê² ê°ìµëë€.
ëë ìŽê²ì ìí ëª ë ¹ì€ ìµì ìŽ ììŽìŒ íë€ê³ ìê°íì§ ììµëë€. ê·žë° ë€ì ì€ëŠ¬ì ìœëì 몚ë ë¶ë¶ìë 죌ììŽë ì¬ì©í ìµì ì ìë €ì£Œë ëŽì©ìŽ ììŽìŒ í©ëë€. ìì€ íìŒì ìŽë€ ì¢ ë¥ì íì ì§ì묞ì ì¡°êž ë ëì ê²ìŽì§ë§ ì¬ì í ê³ ì ê·ì¹ì ê°ë ê²ìŽ ë ì¢ìµëë€.
ëë ëìíë€. ì ìê² êµì¡ ë° ìì¬ ìíµì ëíµì²ëŒ ë€ëŠœëë€.
ì륌 ë€ìŽ 몚ë ëŽë¶ì íë ì€ìœíë§ ìë¯žê° ìì ì ììµëë€.
IJulia ë
žížë¶ìì ë³µì¬í .jl
íìŒì 짧ì ì€í¬ëŠœíž(몚ëìŽ ìë!)ê° ìë ê²œì° íŽë¹ ìœë륌 REPLìì ì§ì ì€ííê±°ë shift- Junoì ì
ë ¥íë©Ž ìííž ì€ìœíì²ëŒ ìŒêŽëê² ìëí©ëë€... íì§ë§ module
ëžë¡ ëì ë³µì¬íë©Ž ì ìì ëíŽ ìëŠ¬ì¹ ê²ì
ëë€. ê·žë¬ë 몚ë ëŽë¶ì íšì ëŽë¶ì íŽë¹ ìœë륌 ë³µì¬íë©Ž ìëíŽìŒ í©ëë€.
ë§ìœ ê·žë ë€ë©Ž ê·žê²ì ìì í ìë¯žê° ììŒë©° ë§€ì° ê°ë¥Žì¹êž° ìœê³ ìŒêŽì±ìŽ ììµëë€. ìµìì ì€í¬ëŠœížë íì ë±ì ìí ëíí ìží°íìŽì€ìŽì§ë§ 몚ëì ê·žë° ì¢ ë¥ì ìœë륌 ë£ì§ ìì ê²ì ëë€. 몚ëì ì ììŒë¡ ë§€ì° ì ì€íê² ê³ ë €ëë íšìë¡ ì±ììŒ íë ê²ì ëë€. ì¬ëë€ìê² ê·ž ê·ì¹ì ëíŽ ë§íë ê²ì ì¬ìž ê²ì ëë€.
몚ë ë³ì륌 ëì íêž° ìíŽ var x = 0ì ìì±íìê² ìµëê¹? ê·žê²ì ëí ìŽê²ì "ìì "íê³ ë€ë¥ž ìžìŽì ë¹ì·í©ëë€.
ìë, ì°šëŒëŠ¬ ì íê² ìŽ! ê·žë¬ë REPLìŽ ìë ì€í¬ëŠœí ìžìŽë ê±°ì ê·žë ê² íì§ ììŒë©°(ì: ruby, python, R, ...) Julia v0.6ì²ëŒ ìëí©ëë€.
Juliaìë ì§ì ë³ìì ì ì ë³ìì ë ê°ì§ ì¢ ë¥ê° ììµëë€. REPLìŽë ìµìì ìì€ìì ëì í ë³ìë ì ì ë³ìì ëë€. íšì ë° ë£ší ëŽë¶ì ëì ë ë³ìë ë¡ì»¬ì ëë€. íë¡ê·žëšìì ì ì ë³ì륌 ì ë°ìŽížíë ê²ì ìŒë°ì ìŒë¡ ì¢ì§ ììŒë¯ë¡ 룚í ëë íšì ëŽë¶ì ìê³ ì ìì ì ë°ìŽížíë €ë ê²œì° ì ì ì ìžì ë€ì ìì±íì¬ ìŽì ëíŽ ëª ìì ìŽìŽìŒ í©ëë€.
ëë ë¹ì ìŽ ì¬êž°ìì ë§íë ê²ì ìì í ìŽíŽíê³ , ëë ìŽ ì€ì륌 ë€ì íì§ ìì ê²ì ëë€. íì§ë§ ëŽê° ê±±ì íë 몚ë 묞ì ë ëŽê° ìëë€. íšì ëŽë¶ì ë³ìê° ìžë¶ì ë³ì륌 볌 ì ìê³ ê·ž ë°ëì 겜ì°ë ë§ì°¬ê°ì§ëŒê³ ì€ëª í ë ë²ì륌 ì§ì ìžêžíì§ ìê³ ë¹êµì ìœê² ìê°íë€ë ê²ì ìììµëë€. ê·žë€ ì첎ë ìŽë¯ž _ìëì ìŒë¡_ ê³ êž ê°ë ì ëë€. ê·žë¬ë ìŽê²ì íìµ ê³¡ì ì íšì¬ ë ìŽë¥ž ìì ìì ì¬ëë€ìê² ìí¥ì 믞ì¹ë ë²ìë§íŒ ì격ìŒë¡ ë³µì¡í ê²ì ìíì§ ìë ê³³ì ëë€...
ëí "REPLìì ëë ìµìì ìì€ìì ëì
í ë³ìë ì ì_ì
ëë€." ë° "íšì ë° ë£ší ëŽë¶ì ëì
ë _ë³ìë ë¡ì»¬ì
ëë€_"ìŒ ë¿ë§ ìëëŒ REPL ëë ìµìì ìì€ì ì ììŽì§ë§ @testset
ë³ìë ì§ìì
ëë€. ì°ëŠ¬ë "ê·žë¥ ìëíê³ ê·žê²ìŽ ì§ìì ìŽë ìžê³ì ìŽë , íìŽì ë¹ëë€"ëŒë í ëŒêµŽì ë¹ ì§ê² ë©ëë€.
ê·žë¬ë ëë @jlperlaì ëìí©ëë€. "몚ë ëŽë¶ì íë ì€ìœíë§ ìë¯žê° ìì ì ìë€"ë ì ìì ëìê² ìì í êŽì°®ì 볎ì ëë€! 몚ëì ë€ì 충ë¶í ë°ì ë ê°ë ì ëë€... ìííž ì€ìœíê° REPL ë° ì€í¬ëŠœížì ëíŽ ìëíë€ë©Ž ì ëì ìŒë¡ êŽì°®ìµëë€.
ì°ëŠ¬ë ì¬ëë€ìê² ìí¥ì 믞ì¹ë ë²ìë§íŒ ì격ìŒë¡ ë³µì¡í ê²ì ìíì§ ììµëë€ ...
ìµìì ìì€ì ë³ìë ì ììŽì§ë§@testset
ë³ìë ì§ìì ëë€.
ëŽê° ì»ìŒë €ê³ íë ê²ì êžë¡ë² ë ë¡ì»¬ì ëí ê°ëší ì€ëª ìŽ ìŽêž° ëšê³ êµì¡ì 충ë¶íë€ê³ ìê°íë€ë ê²ì ëë€. --- "ë²ì"ëŒë ëšìŽë¥Œ ë§í íìë ììµëë€(ì í ë°ìíì§ ììµëë€) ìì ëŽ ì€ëª ìì). REPLìì ê°ëší ííì곌 룚í륌 볎ì¬ì€ ë ì¬ëë€ìê² testsetsì ëíŽ ê°ë¥Žì¹ë ê²ìŽ ìëë©° ìžìŽì 몚ë ë²ì ì§ì ëìì ëí ìì í 목ë¡ìŽ íìíì§ ììµëë€.
ëŽ ì ìŒí ìì ì ìŽ ë³ê²œìŒë¡ ìžíŽ ìžìŽì ëí ë§ì ìžë¶ ì¬íì 믞늬 ê°ë¥Žì³ìŒ í íìê° ìë€ë ê²ì ëë€. ë²ì, í ì€íž ì§í© ë±ì ëí ëë¶ë¶ì ëŽì©ì ì¬ì í ââ묎ìí ì ììŒë©° ì ì ë ë¡ì»¬ì ëí ê°ëší ì€ìŽë©Ž 충ë¶í©ëë€.
ì ì ë ì§ìì ëí ê°ëší ì€ìŽë©Ž 충ë¶í©ëë€.
몚ë ì¬ëìŽ ì²ìë¶í° 몚ë ìœë륌 ìì±íêž° ììí ìžìììë ì ì ìŒë¡ ëìí©ëë€.
묞ì ë íìë€ìê² ë²ìë¿ë§ ìëëŒ ë³µì¬íì¬ ë¶ì¬ë£ì ìœëì ë²ì륌 ìŽíŽíëë¡ ê°ë¥Žì³ìŒ íë€ë ê²ì
ëë€. íšì ëë let ëžë¡ ëŽì stackexchangeì ìë ìœë륌 ë³µì¬íì¬ ë¶ì¬ë£ë ê²œì° ìŽë¥Œ ì€ìºíê³ REPL ëë .jl
ë¶ì¬ë£ë ê²œì° "ì ì"ì ì¶ê°í ìì¹ë¥Œ ì°ŸììŒ íë€ë ê²ì ê°ë¥Žì³ìŒ í©ëë€
ê·žëŠ¬ê³ ëì íìë€ì ì for
ê° ê±±ì íŽìŒ íë ë²ì륌 ìì±íì§ë§ ë€ë¥ž ê²ì ê·žë ì§ ììì§ ë¬»êž° ììí©ëë€....
ì°ëŠ¬ë "ê·žë¥ ìëíê³ ê·žê²ìŽ ì§ìì ìŽë ìžê³ì ìŽë , íìŽì ë¹ëë€"ëŒë í ëŒêµŽì ë¹ ì§ê² ë©ëë€.
í íŽìŠ: julia 0.6ìì x
êžë¡ë² ëë ë¡ì»¬:
for i = 1:10
x = i
end
ëëµì ì ì ìë ë°©ë²ìŽ ìë€ë ê²ì
ëë€. ìëíë©Ž ì ì x
ìŽ ìŽì ì ì ìëìëì§ ì¬ë¶ì ë¬ë € ìêž° ë묞ì
ëë€. ìŽì ë¡ì»¬ìì íì í ì ììµëë€.
ì¬ë¬ë¶, ìŽ ë Œìë ë ìŽì ìì°ì ìŽì§ ììµëë€. Jeffë REPLìì ìŽì ëììŽ ì¢ìë€ë ê²ì ì ìê³ ììµëë€. ëê° ì²ìì ê·žê²ì ì€ê³íê³ êµ¬ííë€ê³ ìê°í©ëê¹? ì°ëŠ¬ë ìŽë¯ž ëíí ëìì ë³ê²œíêž°ë¡ ìœìíìµëë€. "ì€í¬ëŠœíž"ê° ëíììžì§ ì¬ë¶ë ì¬ì í ê²°ì íŽìŒ í©ëë€. "ì€í¬ëŠœíž"ëŒê³ íë©Ž ëíììŒë¡ ë€ëŠ¬ì§ë§ "íë¡ê·žëš"ìŽëŒê³ íë©Ž íšì¬ ë ëíììŒë¡ ë€ëŠ¬ì§ë§ ì íí ê°ì ê²ì ëë€. ëµë³ì ì§§ê³ ê±Žì€ì ìŒë¡ ì ì§íê³ ìì§ ê²°ì íŽìŒ í ì¬íì ì§ì€íììì€. ìŽì ë€ë¥ž ìê²¬ìŽ ììŒë©Ž ìšê²šì ž ì€ë ëê° ì êžž ì ììµëë€.
ëŽê° ê°ì§ê³ ìë í ê°ì§ ìê°ì "ë묎 ì±ê°ìë€" ë° "ë§ì ì¬ëë€ìŽ ê°íŽìì ëì€ê² í ê°ë¥ì±ìŽ ìë€"ë ê²ìŒë¡ ìŒì¶íìµëë€. ë¹ëíí 컚í
ì€ížììë local
ëë global
"ìííž ë²ì"ì
Julia륌 ì²ì ìê°ë°ìì ë(ìŒë§ ì ìŽê³ ì£Œë¡ Fortran 배겜ìì ììµëë€) "Juliaë 컎íìŒëê³ íšì ìì€ìì ë¹ ë¥Žë¯ë¡ íšìšì ìŽìŽìŒ íë 몚ë ê²ì íšì ëŽë¶ìì ìíëìŽìŒ í©ëë€. . ë©ìž 'íë¡ê·žëš'ììë ì€í¬ëŠœí ìžìŽì²ëŒ ìëí©ëë€." ëë ê·ž ì§ì ì ìŽíŽíì§ ìê³ ë ê³ì°ì ìŒë¡ ë묎 ë§ì ê²ì ì구íë ì¬ëì ììí ì ìêž° ë묞ì 충ë¶í ê³µì íë€ë ê²ì ìììµëë€. ë°ëŒì êž°ë¥ììì ëìŒí íêž°ë²ê³Œ 구ì±ì ì¬ì©íêž° ìíŽ ë©ìž íë¡ê·žëšìì ì±ë¥ì í¬ììŽ ìë€ë©Ž ìŽë¬í ë²ì ì§ì ê·ì¹ì ìŽíŽíê³ ê°ë¥Žì¹ë €ê³ ë žë ¥íê³ ë³µì¬ ë° ë³µì¬ë¥Œ í ì ìë ê²ë³Žë€ ìì í ìì© ê°ë¥íê³ íšì¬ ë ìì© ê°ë¥íë€ë ê²ì ìììµëë€. í ê³³ìì ë€ë¥ž ê³³ìŒë¡ ìœë륌 ë¶ì¬ë£ìµëë€.
귞걎 ê·žë ê³ , ì ë Juliaìì ìì§ ìŽë³ŽììŽë©° ìŒë¶ ê³ ë±íì ë° íë¶ììê² ë¬ŒëŠ¬ì ìì€í ì뮬ë ìŽì ì Ʞ볞 ì¬íì ê°ë¥Žì¹êž° ìíŽ Julia륌 ì ííìµëë€. ê·žëŠ¬ê³ ëë ìŽë¯ž ìŽ ë¬žì ê° ìŽì ë²ì ì 'ì ì' ëììŒë¡ ëìê°êž°ë¥Œ í¬ë§íê³ ììµëë€.
ìŽ ëíë íì¬ ì 겚 ììŒë©° Julia 컀믞í°ë§ ëêžì ë¬ ì ììµëë€.
@JeffBezanson , ìŽ ëŽë¡ ì€ë ë ìì ì²ììë REPLììë§ ì ìí ì믞 첎ê³ë¥Œ 구ííê³ ë€ë¥ž ê³³ììë ìµížìží ê³íì 묎ìì ëê¹?
SoftScope.jlì ë€ì ìì±íë êµ¬ë¬žìŽ ìëëŒ ë®ì¶ë ìœë( julia-syntax.scm
)ì ì§ì ë£ì ê³íìž ê² ê°ìµëê¹? ìëë©Ž 뚌ì 구묞ì ë€ì ìì±íê³ (SoftScope륌 ì ìë ê·ì¹ìŒë¡ ìì íê³ ìŽë¥Œ stdlibë¡ ë³í) ëì€ì Julia 늎늬ì€ë¥Œ ìíŽ ë®ì¶ë ìœëì ë£ë ê²ì ì°êž°íìê² ìµëê¹?
ê°ì¥ ì ì©í ëêž
@JeffBezanson , ì°ëŠ¬ ì€ ë§ì ì¬ëë€ìŽ ì í ëì ë° íµê³ì ê°ì êž°ì 곌ì ìì Matlab ë±ì ëì íì¬ Julia륌 ì¬ì©íê³ ì¶ìŽíë€ë ê²ì êž°ìµíììì€. ìŽë€ì íë¡ê·žëë° ê³Œì ìŽ ìëë©° íìë€ì íë¡ê·žëë° ë°°ê²œìŽ ìë 겜ì°ê° ë§ìµëë€. ì°ëŠ¬ë 구조ì íë¡ê·žëë°ì ì ë íì§ ììµëë€. ê±°ì 몚ë ê²ìŽ 짧ì ì€ëí«ê³Œ ì ì ë³ìì ìížìì©í©ëë€.
ê²ë€ê° ëŽê° ëì ìžìŽë¥Œ ì²ì ì¬ì©íë ìŽì ë ëíí íì곌 ë³Žë€ íë šë íë¡ê·žëë° ì¬ìŽë¥Œ ì ì°íê² ì ííêž° ìíŽìì ëë€. ì ì ë° íšì 컚í ì€ížìì ëìŒí ìœë륌 ì¬ì©í ì ìë€ë ê²ì ê°ë ì ë²ì륌 ì§ì íë ë° ìµìí ì¬ëìê²ë ìŽë¥Œ ë°©íŽíë ìììŽë©° CSê° ìë 배겜ì íìë€ìê²ë íšì¬ ë ëì©ëë€.