broadcast
ãã€ãã¬ãŒã¿ã§æ©èœããŠããªãããšã«æ°ä»ããã®ã¯é©ã
dict = Dict(:a => 1, :b =>2)
<strong i="7">@show</strong> string.(keys(dict)) # => Expected ["a", "b"]
"Symbol[:a,:b]"
ããã¯ã Broadcast.containertype
Any
è¿ãããã§ãhttps://github.com/JuliaLang/julia/blob/413ed79ec54f3a754ac8bc57c1d29835d17bd274/base/broadcast.jl#L31
ãã©ãŒã«ããã¯ã«ã€ãªããïŒ https ïŒ
ãã®ã€ãã¬ãŒã¿ã«å¯ŸããŠcontainertype
ãArray
ãšããŠå®çŸ©ãããšã broadcast
ãã€ãã¬ãŒã¿ã€ã³ã¿ãŒãã§ã€ã¹iteratorsize(IterType)
ãã§ãã¯ããªãããã size
åŒã³åºãã§åé¡ãçºçããŸãã iteratorsize(IterType)
ã
map
ã¯ããã©ãŒã«ããã¯map(f, A) = collect(Generator(f,A))
ã§ããã解決ããŸããããã¯ãçŸåšã®broadcast(f, Any, A) = f(A)
å®çŸ©ãããè³¢æãããããŸããã
ããã¯æå³çãªãã®ã§ãã broadcast
ã¯åœ¢ç¶ã®ããã³ã³ããçšã§ãããã©ã«ãã§ã¯ãªããžã§ã¯ããã¹ã«ã©ãŒãšããŠæ±ããŸãã map
ã¯åœ¢ç¶ã®ãªãã³ã³ããçšã§ãããããã©ã«ãã§ã¯ãªããžã§ã¯ããã€ãã¬ãŒã¿ãšããŠæ±ããŸãã
ããšãã°ã broadcast
ã¯æååããã¹ã«ã©ãŒããšããŠæ±ããŸããã map
ã¯æåãç¹°ãè¿ãåŠçããŸãã
ããããåé¡ã¯ã人ã
ãæ°ãããããæ§æãããŸãã«ã䟿å©ã ãšæããããšã§ãã ããããéå»ã«ã¯map
ãã³ã³ãã¯ãã«è¡šçŸããããšããèŠæããããŸããã æ®å¿µãªããããããæ§æã¯ãã§ã«æ¡çšãããŠããŸãã
ãŸãã @ stevengjã以åã«ææããããã«ã map
ãšbroadcast
éã«ã¯éããããã¯ãã§ãããããã§ãªãå Žåã¯ãäž¡æ¹ãæã€ããšã®ãã€ã³ãã¯äœã§ããã
@stevengjããããã€ãã¬ãŒã¿ãŒã«ã¯åœ¢ããããŸãïŒç¹ã«ãžã§ãã¬ãŒã¿ãŒïŒ http://docs.julialang.org/en/release-0.5/manual/interfaces/#interfaces
ã€ãã¬ãŒã¿ããã®åä»ãªé åã«ããããšã¯ãã€ãã¬ãŒã¿ã§ãå®è¡ãããã³ã³ããã§å®è¡ãããããšã®ã»ãšãã©ã§ãããšç§ã¯äž»åŒµããŸããããã§ãããããã.
æ§æãããŸãã«ã䟿å©ã§ãããšããäºå®ã ãã§ãã ïŒãããŠããªããåŸããšã©ãŒã¯éåžžã«äžéæã§ãïŒã
@pabloferz map
ãšbroadcast
ã®äž»ãªéãã¯ãã¹ã«ã©ãŒã®æ±ãã§ãã çŸåšãã¹ã«ã©ãŒã®å®çŸ©ã«ã€ããŠã¯è°è«ã®äœå°ãããã length(x) > 1
ãæã€ãã¹ãŠã®ãã®ãã¹ã«ã©ãŒãšèŠãªãã¹ãã§ã¯ãªããšæããŸãã
é¢æ°åŒã³åºãèªäœã§ã¯ãªããã©ã®åŒæ°ãå埩å¯èœãšããŠæ±ãããããŒã¯ãããšããããŸããããªããªããŸãã ç§ãæãã«ïŒ
broadcast
ïŒç§ã¯äžè¬çã«ãä¿¡ããŠããŸãïŒã圢ãããŠãããšããããšã¯ã size
ïŒ length
ã ãã§ãªãïŒãæã¡ã玢åŒä»ãå¯èœã§ããããšãæå³ããŸãã ã¿ãã«ãé€ããŠã size
ãªããã®ã¯ãã¹ãŠã¹ã«ã©ãŒãšããŠæ±ãããŸãã çŸåšã®å®è£
ãèãããšãæåã«getindex
å¿
èŠã§ãããããããŒããã£ã¹ããããªããžã§ã¯ãã«å¯ŸããŠ1ã€ãå®çŸ©ã§ããå¿
èŠããããŸãã ã€ãã¬ãŒã¿ã®å Žåãããã¯äžè¬çã«ã¯äžå¯èœã§ãã
ç§ãããã«åºããããŸããã ïŒåºå®å€ã§ã¯ãªãïŒé¢æ°ã®è©äŸ¡ãç¹°ãè¿ããŠé
åãfill!
ããæ¹æ³ãæ¢ããŠããïŒ16769ããæ¥ãŠããããæ§æã§ãã§ã«ããŸãããã®ã§ã¯ãªãããšæããŸããã ãããã a = zeros(2, 3); a .= [rand() for i=1:2, j=1:3]
æ©èœããå ŽåãïŒããããïŒããå®ãa .= (rand() for i=1:2, j=1:3)
ã¯æ©èœããŸããã ãã®ãžã§ãã¬ãŒã¿ãŒã¯HasShape()
ã§ãããå®éã«ã¯ã€ã³ããã¯ã¹äœææ©èœã¯ãããŸããã ãããŒããã£ã¹ã/ãããæ§æãã©ã®ããã«æ©èœãããã«ã€ããŠã®ç解ã¯éåžžã«è»œãã§ãããããã§ã€ã³ããã¯ã¹äœææ©èœã®ç¹æ§ãæã£ãŠãããšåœ¹ã«ç«ã¡ãŸããïŒ ãã®ããã®PRïŒïŒ22489ïŒããã§ã«ãããŸã...
@rfourquet ãããªãã¯a = zeros(2, 3); a .= rand.()
è¡ãããšãã§ããŸã
ã¯ãããã ãããã£ãšæ£ç¢ºã«èšãå¿
èŠããããŸãã a .= (f(i, j) for i=1:2, j=1:3)
ããã«ãã€ã³ããã¯ã¹ããã©ã¡ãŒã¿ãŒãšããŠååŸããé¢æ°ã䜿çšããããšæããŸãã
HasShape
ã€ãã¬ãŒã¿ã®ãããŒããã£ã¹ããã£ã¡ã³ã·ã§ã³ã®æ¬ ç¹ã¯äœã§ããããïŒ ããã¯èªç¶ãªããšã®ããã«èãããŸãã
@nalimilan ãäžèŠãããšãããããã¯åççã§ãããããæ¯èŒçç°¡åã«å®è£ ã§ãããšæããŸãã å£ããŠããã®ã§ã1.0ãŸã§ã«è¡ãå¿ èŠããããŸãã
ããã«é¢ããæœåšçãªåé¡ã®1ã€ã¯ã HasShape
ã€ãã¬ãŒã¿ãå¿
ãããgetindex
ãµããŒãããŠãããšã¯éããªãããšã§ããããã«ãããå®è£
ãé£ãããªãå¯èœæ§ããããŸããïŒ
1ã€ã®å¯èœæ§ã¯ãäžæçã«ïŒ1.0ã®å ŽåïŒé åã«ã³ããŒããã ãã®åçŽãªå®è£ ãäœæããããšã§ãã ããã«ããã1.0以éã®æé©åãå¯èœã«ãªããŸã
ããã«é¢ããæœåšçãªåé¡ã®1ã€ã¯ãHasShapeã€ãã¬ãŒã¿ãå¿ ãããgetindexããµããŒãããŠããªãããšã§ããããã«ãããå®è£ ãé£ãããªãå¯èœæ§ããããŸããïŒ
äžã§è¿°ã¹ãããã«ãã€ãã¬ãŒã¿ãžã®ã€ã³ããã¯ã¹äœæãå¯èœã«ããPRãïŒ22489ã«ãããŸããããã圹ç«ã€å Žåã¯ã
å°ãªããšã1.xã®åäœãæ¹åããã«ã¯ã1.0ã§äœãããå¿ èŠããããŸããïŒ
ããã@nalimilanã«æè¬ããŸããç§ããããããããã£ãã®ã§ãã ãããŒããã£ã¹ãåŒã®å³åŽã§HasShape
ãžã§ãã¬ãŒã¿ãŒãèš±å¯ããããšã1.0ã«å®è£
ã§ããªãå Žåããžã§ãã¬ãŒã¿ãŒãã¹ã«ã©ãŒãšããŠæ±ãã®ã§ã¯ãªããä»ããããããšã©ãŒã«ããå¿
èŠããããŸããïŒ ããã1.xã§æå¹ã«ã§ããããã«ããŸãã
ïŒ+1ïŒããªã¢ãŒãžã§ã¯ãããããšã©ãŒã«ãããïŒå®å
šãªéžæïŒã collect
ãåŒã³åºãããšããå§ãããŸãïŒç°¡åãªå ŽåïŒã
map
ã¯ããã¹ãŠã®åŒæ°ãã³ã³ãããŒãšããŠæ±ãããã¹ãŠã®åŒæ°ãå埩åŠçããããšããŸãã ç§ã®çæ³çãªäžçã§ã¯ã broadcast
ã¯äŒŒãŠããããã®ãã¹ãŠã®åŒæ°ããããŒããã£ã¹ãå¯èœãªåœ¢ç¶ãæã£ãŠããããšãæ±ããããšãã°size
ãå®çŸ©ãããŠããªãå Žåã¯ãšã©ãŒãçºçããŸãã ãããŒããã£ã¹ãã§ã¯ãå€ãfill
ã§ã©ããããŠã0-dé
åãçæããããšã«ãããä»»æã®å€ãã¹ã«ã©ãŒãšããŠæ±ãããšãã§ããããšãææããŸãã
julia> fill("a")
0-dimensional Array{String,0}:
"a"
julia> fill([2])
0-dimensional Array{Array{Int64,1},0}:
[2]
ããã©ã«ãã§ãã¹ãŠã®ã¹ã«ã©ãŒãã³ã³ãããŒãšããŠæ±ãããšãæ¬åœã«ææ¡ããŸããïŒ ããã¯ããŸãå®çšçã§ã¯ãªãããã§ãã
ã€ãã¬ãŒã¿ããµããŒãããæ¹æ³ããŸãã¯ãµããŒããããŸã§ãšã©ãŒãã¹ããŒããæ¹æ³ãèŠããšã BroadcastStyle
ã€ãã¬ãŒã¿ãèå¥ããæ¹æ³ãå¿
èŠãªããã§ãã Symbol
ãããªã¹ã«ã©ãŒã«å¯ŸããŠãã Base.iteratorsize
ã¯HasLength
è¿ããããçŸåšã¯äžå¯èœã§ãã Base.isiterable
ãã¬ã€ãïŒä»ã®ããšã«åœ¹ç«ã€å¯èœæ§ããããŸãïŒãå°å
¥ãããã Base.iteratorsize
ããã©ã«ãã§NotIterable
ããããšãã§ããŸãïŒããã¯HasLength
ãæã€ããšã«ãæå³ããããŸãïŒããã©ã«ããšããŠã®
ïŒå°æ¥ã®è°è«ã®ããã®ããªãããŒãªã±ãŒã¹ïŒ UniformScaling
ãïŒ
@timholy broadcast
ã®åèšèšãè¡ã£ãã®ã§ãäœãææ¡ã¯ãããŸããïŒ
@JeffBezanson ã broadcast
èŠç¹ã¯ãã³ã³ããã«äžèŽããããã«ã¹ã«ã©ãŒãããããŒããã£ã¹ããã§ããããšã§ããããšãã°ã ["bug", "cow", "house"] .* "s" ----> ["bugs", "cows", "houses"]
ãŸãã ããã¯ã map
ã®åäœãšã¯æ ¹æ¬çã«ç°ãªããŸãã
ãããã broadcast
ãããã©ã«ãã§ãªããžã§ã¯ããã¹ã«ã©ãŒãšããŠæ±ããã³ã³ãããšçµã¿åãããããšãã§ããçç±ã§ãã èªèãããªãã¿ã€ãã«å¯ŸããŠãšã©ãŒãã¹ããŒãããšããã®æçšæ§ã倧å¹
ã«äœäžããŸãã
ç¹å®ã®åãbroadcast
ã³ã³ãããŒãšããŠå®£èšããã«ã¯ãé©åãªã¡ãœãããå®çŸ©ããå¿
èŠããããŸãããããã©ã«ãã§ã¯åŒãç¶ããªããžã§ã¯ããã¹ã«ã©ãŒãšããŠæ±ãå¿
èŠããããšæããŸãã
ç¡é¢ä¿ã®PRïŒhttps://github.com/JuliaLang/julia/pull/25339ïŒã§ã @ Kenoã¯applicable(start, (x,))
ã䜿çšããŠã x
ãå埩å¯èœãã©ããã確èªããããšãææ¡ããŸããã ããã§ãåãã¢ãããŒãã䜿çšããå¿
èŠããããŸããïŒ ã€ãã¬ãŒã¿ãããæ確ã«å®çŸ©ããæ¹ãæ確ã ãšæããŸããïŒ Base.iteratorsize
ãŸãã¯ç¹æ§ã«åºã¥ãïŒã start
ã䜿çšããããšãçã«ããªã£ãŠããŸãã
ããã©ã«ããapplicable(start, (x,))
ããæ瀺çãªç¹æ§ãæã€ããšãã§ããŸãã ããã«ãããå¿
èŠã«å¿ããŠãªãŒããŒã©ã€ãã§ããŸãã
èãããã解決çãšãã®æ¬ ç¹ã説æããããã«ãïŒ25356ãæåºããŸããã
@stevengjã®äŸ["bug", "cow", "house"] .* "s" ----> ["bugs", "cows", "houses"]
ãããæååã¯å埩å¯èœã§ãããããã§ã¯ã¹ã«ã©ãŒã®ããã«æ©èœãããããå埩å¯èœæ§ã¯ååã§ã¯ãªãããã§ãã ãšã«ããç¹æ§ãå®çŸ©ããå¿
èŠãããå Žåã¯ããã¹ãŠã®ã€ãã¬ãŒã¿ã«èŠä»¶ãè¿œå ããã®ã§ã¯ãªãããããŒããã£ã¹ãã®ãªããã€ã³ãåŒãç¶ãèŠæ±ããã®ãæåã®å ŽåããããŸãã
幞ãã keys(dict)
ã¯AbstractSet
è¿ãããã«ãªã£ãããã AbstractSet
ãããŒããã£ã¹ãç¹æ§ãè¿œå ãããšãOPã®äŸãä¿®æ£ãããŸãã ããã€ãã®äžè¬çãªã±ãŒã¹ããã£ããããããã«ã Generator
ããããŒããã£ã¹ãããããã®ãšã©ãŒãè¿œå ããããšãã§ããŸãã
AbstractSet
ã³ã³ãããŒãä»ãããããŒããã£ã¹ãã¯ãæ¬è³ªçã«å°ãåé¡ãããããã§ãã AbstractSet
ãã¹ã«ã©ãŒãšçµã¿åãããããšãã§ããŸãããã»ããã®å埩é åºãæå®ãããŠããªããããä»ã®ã³ã³ãããŒãšçµã¿åãããããšãã§ããŸããã ãã®çš®ã®æäœã¯ãããããŒããã£ã¹ããæäœã®éåžžã®æå³ãç ŽããŸãã
ã¯ããPRãæºåãããšãã«ãã»ããã¯ãããŒããã£ã¹ãããµããŒãããå¿
èŠãããã€ãã¬ãŒã¿ã®æè¯ã®äŸã§ã¯ãªãããšã«æ°ä»ããŸããã Generator
ãProductIterator
ãã®ã¯ãã¯ããã«èå³æ·±ãã±ãŒã¹ã§ãã
ãã¶ãçãã¯ã HasShape
ãæã€ã€ãã¬ãŒã¿ããããŒããã£ã¹ããããã以å€ã¯ãã¹ãŠã¹ã«ã©ãŒãšããŠæ±ãç¶ããããšã§ãã OPã¯ä¿®æ£ãããŸãããããã以å€ã¯ããªããšã¬ã¬ã³ãã§ãã
ä»ã®ã©ã³ãã ãªèãïŒåœ¢ç¶ã®äºææ§ã¯åé¡ã§ã¯ãªãã®ã§ã1ã€ã®åŒæ°ïŒ string.(x)
ïŒããããŒããã£ã¹ãããããšã¯ã map
ããã«æ©èœããç¹æ®ãªã±ãŒã¹ã§ããå¿
èŠããããŸããïŒ
ãã¶ãçãã¯ãHasShapeãæã€ã€ãã¬ãŒã¿ããããŒããã£ã¹ãããä»ã®ãã¹ãŠãã¹ã«ã©ãŒãšããŠæ±ãç¶ããããšã§ãïŒããããšããŸããïŒïŒ OPã¯ä¿®æ£ãããŸãããããã以å€ã¯ããªããšã¬ã¬ã³ãã§ãã
HasLength
ã€ãã¬ãŒã¿ãé€å€ãã匷ãçç±ããããã©ããã¯ããããŸããã ã¿ãã«ïŒ size
å®è£
ããŠããªãïŒãä»ãããããŒããã£ã¹ãããµããŒãããŠããã®ã§ã圢ã®ãªãã€ãã¬ãŒã¿ãŒãã¿ãã«ã®ããã«æ±ã£ãŠã¿ãŸãããïŒ äŸãã°ãããã¯çµæã䜿çšã§ããããã«ããã«ã¯å®ç§ãªçã«ããªã£ãŠkeys(::OrderedDict)
ããŠbroadcast
ã ãµããŒããããŠããªãå Žåã broadcast
ïŒããã³çŽ æµãªãããæ§æïŒã§äœ¿çšã§ããããã«ããããã«ãã€ãã¬ãŒã¿ãHasShape
ãšããŠå®çŸ©ããããªãã§ãããã
ã¹ãã£ãŒããåŒçšãããšã
broadcast
ã¯åœ¢ç¶ã®ããã³ã³ããçšã§ã
HasShape
ã¯ããããããæ£ç¢ºã«å®çŸ©ããããã®åççãªæ¹æ³ã®ããã§ãã ããã§ãªããã°ãããšãã°æååã§ã®ãããŒããã£ã¹ãã®åäœãäžæããå¿
èŠãããããã«æãããŸãã
ã¿ãã«ã¯ã³ã³ãããŒãšèŠãªãããæååã¯ã¹ã«ã©ãŒãšèŠãªãããããããã§ã«ççŸããããŸãã ãšã«ããæååã¯éåžžã«ç¹å¥ã§ããæååã®åäœã圢ç¶ãæããªãããã§ã¯ãªããšæããŸããæååããã³ã³ãããããã¹ã«ã©ãŒãšèŠãªãããããšãå€ãå¯äžã®ã³ã¬ã¯ã·ã§ã³ã§ãããšããäºå®ã«é¢é£ããŠããŸãã
ãã¶ã@stevengjã¯ã broadcast
ã圢ç¶ã®ããã³ã³ãããŒã®ã¿ããµããŒãããå¿
èŠããããšåœŒãèããçç±ãéçºã§ããŸããïŒ ã¿ãã«ãã¹ã«ã©ãŒãšèŠãªãããšããµããŒãããŸããïŒ
ã¿ãã«ãbroadcast
ïŒïŒ16986ïŒã§ã³ã³ãããŒãšããŠæ±ãçç±ã¯ãå®éã«ã¯ã¿ãã«ã¯æ¬è³ªçã«éçãªãã¯ãã«ãšããŠäœ¿çšãããããšãå€ãã broadcast
ã§ã¯ãã¹ã«ã©ãŒããšããŠæ±ãããšã¯ãªãã£ãããã ãšæããŸãããšã«ãããšãŠã䟿å©ã§ãã 察ç
§çã«ãæååã¯ïŒaïŒæåååŠçæäœã®ãã¢ãã ããšããŠæ±ãããããšãå€ããïŒbïŒäžè¬ã«é£ç¶ããã€ã³ããã¯ã¹ããªãããã broadcast
ãã¬ãŒã ã¯ãŒã¯ãžã®é©åæ§ãéåžžã«äœããªããŸãã
ååãšããŠã broadcast
ã³ã³ãããŒãšããŠäœ¿çšãããHasShape
ã€ãã¬ãŒã¿ãŒããµããŒãããŸãã äžã§è¿°ã¹ãããã«ãäž»ãªåé¡ã¯ã HasShape
ããããããšãã£ãŠã getindex
æ©èœããããšãä¿èšŒãããã®ã§ã¯ãªããšããããšã§ãã
äžã§è¿°ã¹ãããã«ãäž»ãªåé¡ã¯ãHasShapeã䜿çšããŠãgetindexãæ©èœããããšãä¿èšŒã§ããªãããšã§ãã
ïŒ22489ã®ãããªãã®ã圹ç«ã¡ãŸããïŒã€ãŸããã€ãã¬ãŒã¿ãã€ã³ããã¯ã¹å¯èœãã©ããã瀺ãã€ãã¬ãŒã¿ç¹æ§ããããŸããïŒ
ïŒ22489ã®ãããªãã®ã圹ç«ã¡ãŸããïŒã€ãŸããã€ãã¬ãŒã¿ãã€ã³ããã¯ã¹å¯èœãã©ããã瀺ãã€ãã¬ãŒã¿ç¹æ§ããããŸããïŒ
ãããã broadcast
ã§ãµããŒããããã®ã¯ãã€ã³ããã¯ã¹å¯èœãªã€ãã¬ãŒã¿ã ãã§ããïŒ ããã¯å¶éãå³ããããããã«èãããŸããå埩å¯èœãªãã®ïŒããšãã°ã keys(::OrderedDict)
ã®çµæïŒã«å¯ŸããŠstring.(itr, "1")
ãããªããšãå®è¡ã§ãããšéåžžã«äŸ¿å©ã§ããããããå®è£
ããããã«ã€ã³ããã¯ã¹ä»ãã¯å¿
èŠãããŸããã 0.7 / 1.0ã§ã€ã³ããã¯ã¹äœæããµããŒãããŠããªããã¹ãŠã®ã€ãã¬ãŒã¿ã«å¯ŸããŠãšã©ãŒãã¹ããŒããåŸç¶ã®ãªãªãŒã¹ã§ãããããµããŒãããããšããæ¹ããããšæããŸãã ãšã«ãããã€ãã¬ãŒã¿ãã¹ã«ã©ãŒãšããŠæ±ãããšã¯ããŸã圹ã«ç«ã¡ãŸããã 次ã«ã1.xãªãªãŒã¹ã§å¿
èŠãªåäœãå®è£
ã§ããŸãã
@stevengjæååãšã¿ãã«ã«é¢ããããªãã®è°è«ã«åæããŸããããªãHasLength
ã€ãã¬ãŒã¿ãã¿ãã«ãšããŠæ±ãã¹ãã§ã¯ãªãã®ã§ããïŒ ç§ã¯ä»ãŸã§ããã®æ£åœåãèªãã§ããŸããã§ããã
@nalimilan ã broadcast
ã§ãµããŒãããå¿
èŠãããã®ã¯indexable + hasshapeã€ãã¬ãŒã¿ã ãã ãšæãââåŸåããããŸãã äžè¬çãªã€ãã¬ãŒã¿ããã®é¢æ°ã«è©°ã蟌ãããšãããšããã®æå³ãæ··ä¹±ããããŸããããæç¹ã§ã map
䜿çšããå¿
èŠããããŸãã
ã€ãã¬ãŒã¿ã«å¯ŸããŠ
string.(itr, "1")
ãå®è¡ã§ãããšéåžžã«äŸ¿å©ã§ãâŠãšã«ãããã€ãã¬ãŒã¿ãã¹ã«ã©ãŒãšããŠæ±ãããšã¯ããŸã圹ã«ç«ã¡ãŸããã
æååã®å Žåã¯ãããšççŸããŸãâ "1"
åŒæ°èªäœã¯ããªãã®äŸã§ã¯å埩å¯èœã§ãã ç©äºã®ãã³ã¯ãïŒäŸãã°å埩å¯èœã§ãPyObject
sã®PyCallã§å®çŸ©start
é äžåã®ã»ããã®ãããªãã®ãå«ãããªã©ïŒãbroadcast
æŠå¿µãæ¬åœã«å£ããŠããŸãã
ãŸããïŒ24990ã䜿çšãããšã map
ãçŸåšãããããã«ç°¡åã«ãªããŸããããšãã°ã map(string(_,"1"), itr)
ãå®è¡ã§ããããã«ãªããŸãã
@nalimilan ãç§ã¯ã
çŸåšãã€ã³ããã¯ã¹å¯èœãªã€ãã¬ãŒã¿ã®ç¹æ§ã¯ãããŸããã ã©ã®ããã«ãããæž¡ãããšãææ¡ããŸããïŒ ç§ã®WIPPRïŒ25356ã¯ãã€ã³ããã¯ã¹äœæããµããŒãããŠããªãã€ãã¬ãŒã¿ã«å¯ŸããŠãšã©ãŒãã¹ããŒããŸããããã¯ãã€ãã¬ãŒã¿ãã¹ã«ã©ãŒãšããŠæ±ãããšãããŸã圹ã«ç«ããªããšä»®å®ãããšãããã»ã©æªãã¯ãããŸããã ããããã¹ã«ã©ãŒãšããŠæ±ãããå Žåã¯ãå¥ã®ç¹æ§ãå¿ èŠã§ãããïŒ
ç§ã¯å®å
šã«æçœã§ã¯ãªããã¹ãŠã®ã±ãŒã¹ã§ãšã©ãŒãçºçãããåŸåãããã®ã§ãå¿
ãããããŸãæçšã§ã¯ãªãããã©ã«ãã®åäœã«èªåèªèº«ãããã¯ããã®ã§ã¯ãªããå°æ¥çã«ä»»æã®åäœãå®è£
ã§ããŸãïŒã€ãŸããäžéšã®ã€ãã¬ãŒã¿ãã¹ã«ã©ãŒãšããŠæ±ããŸãïŒ ã ãã®åé¡ã瀺ãããã«ã broadcast
ã®åäœã¯ãæ£ããèšèšããã®ã«æéãããããŸãã
ïŒFWIWã PyObject
ã¯ãPythonã€ãã¬ãŒã¿ãã©ãããããã©ãããäºåã«ç¥ããªããšããçç±ã ãã§ãIIUCãå埩ãããã³ã«ãå®è£
ããŠãããããç§ã«ã¯è¯ãäŸã®ããã«ã¯æããŸããã PyObject
ã¯ãæšæºã®Juliaãªããžã§ã¯ãã®ããã«è¡šç€ºããããã«getfield
ãªãŒããŒããŒãã䜿çšããå¿
èŠãããã®ãšåæ§ã«ãããã§ã¯æããã«äŸå€ã§ããã»ããã¯ãããJulianã®äŸã§ããïŒ
ä»ã®å Žæã§ææ¡ãããŠããããã«ãã€ã³ããã¯ã¹å¯èœãªHasShape
ã€ãã¬ãŒã¿ã®ç¹æ§ãè¿œå ã§ããŸãã
ããªã¢ãŒãžã¯ããããŒããã£ã¹ãããã¹ãŠã®åŒæ°ïŒããããªã©ïŒã§å埩ããæŒç®åæåãè¿œå ããŠïŒå¥ã®å·ã§ä»¥åã«ææ¡ãããããã«const & = Ref
ãå®è¡ããããŸãã¯ãããã~
ïŒãæ瀺çã«ããŒã¯ãããšããã¢ã€ãã¢ã奜ãã§ãã 0-dåŒæ°ã
@vtjnash ãããã¯HasShape
ã€ãã¬ãŒã¿ã«ãšã£ãŠãã©ãããæå³ã§ããïŒ æååãã»ãããªã©ãç¹°ãè¿ããããŒããã£ã¹ããããšããããšã§ããïŒ çŸåšã®broadcast
å®è£
ã¯ã getindex
ãšå¯æ¥ã«é¢é£ããŠããŸãâŠç¹ã«ãç°ãªã次å
ã®åŒæ°ãçµã¿åãããå Žåã«ã getindex
ãªãã§å®è£
ããæ¹æ³ã«ã€ããŠèããŸãããïŒ
çè«çã«ã¯ãã€ã³ããã¯ã¹ä»ãã§ããªãã€ãã¬ãŒã¿ïŒå°ãªããšãæå³ã®ããé åºãæã€ã€ãã¬ãŒã¿ïŒããµããŒãã§ããã¯ãã§ãã ãã¹ãŠã®å ¥åãåã圢ç¶ã®å Žåãããã¯ç°¡åã§ãã ããããç°ãªã圢ç¶ã§ãããã€ãã¬ãŒã¿ãçµæãšã¯ç°ãªãïŒå°ããïŒåœ¢ç¶ã§ããå Žåãããã€ãã®äžéã¹ãã¬ãŒãžãå¿ èŠã«ãªããŸãã
PR https://github.com/JuliaLang/julia/pull/22489ã®IteratorAccess
ãã¬ã€ããé©å¿/åå©çšããŠãã€ã³ããã¯ã¹å¯èœãªã€ãã¬ãŒã¿ãŒãæ€åºã§ããããã§ãã https://github.com/JuliaLang/julia/pull/24774ã§ã¯ãã©ã®ã€ãã¬ãŒã¿ãã€ã³ããã¯ã¹å¯èœã§ãããïŒãããã£ãŠã keys
å®è£
ããå¿
èŠããããïŒãç¥ãããšãå¿
èŠã§ãã
CcïŒ @rfourquet
ðããªã¢ãŒãžã§ã¯ãããããšã©ãŒã«ããïŒå®å šãªéžæïŒããã³ã¬ã¯ãã³ãŒã«ãåŒã³åºãïŒç°¡åãªå ŽåïŒããšããå§ãããŸãã
ããªã¢ãŒãžã¯ãããã§æ¡çšããç¹å®ã®æŠç¥ã決å®ã§ããŸããïŒ ããšãã°ãäžèšã®@JeffBezansonã®ã³ã¡ã³ãã®ããããã¯äœã§ããïŒ ã€ã³ããã¯ã¹äœæããµããŒãããŠããªããã¹ãŠã®ã€ãã¬ãŒã¿ãŒã«å¯ŸããŠãšã©ãŒãã¹ããŒããå¿
èŠããããŸããïŒåŸã§å¿
èŠãªããšããã¹ãŠå®è¡ã§ããããã«ãçŸæç¹ã§æãå®å
šãªéžæã§ãïŒããŸãã¯äžéšã®ã€ãã¬ãŒã¿ãŒãã¹ã«ã©ãŒãšããŠæ±ãå¿
èŠããããŸããïŒ ã€ã³ããã¯ã¹å¯èœãªã€ãã¬ãŒã¿ã®ãã¬ã€ããè¿œå ããå¿
èŠããããŸããïŒã¯ãã®å Žåãã©ã®ãããªåœ¢åŒã§è¿œå ããŸããïŒ Base.IteratorSize
æ°ãããã¬ã€ããšæ°ããéžæïŒïŒ äžè¬ã«ã€ãã¬ãŒã¿ã®ç¹æ§ãè¿œå ããå¿
èŠããããŸããïŒã¹ã«ã©ãŒãšåºå¥ã§ããããã«ããããïŒïŒ
次ã®åäœã¯è¯ãããã§ãã
Ref(x)
ãŸãã¯[x]
ãæž¡ããŠã Ref(x)
x
ãã¹ã«ã©ãŒãšããŠåŠçããããã«åŒ·å¶ããŸããæåŸã®ç¹ïŒããããäŸãæããŠïŒã®ã¡ã¢ãæ確ã«ããŠããã ããŸããïŒ ç¹æ§ãååšããããšã®æå³ã¯ããããŸããããå埩ãããå埩ããªãããéžæããããã«äœ¿çšãããŸããã
ãããã£ãŠãåºæ¬çã«ããã¹ãŠã®åŒæ°ãç¹°ãè¿ããŠãããŒããã£ã¹ãããããšã¯ãã³ã¬ã¯ã·ã§ã³ä»¥å€ã®ãã¹ãŠã®åïŒç¹ã«ã Number
ã Symbol
ã«å¯ŸããŠScalar()
ãè¿ãããã«BroadcastStyle
ãå®çŸ©ããå¿
èŠãããããšãæå³ããŸãã Symbol
ãšAbstractString
ïŒïŒ ããã¯ãæåŸã®ç®æ¡æžãã§èšåãããŠãããç¹æ§ãã®ããã«èãããŸãã
æ£çŽãªãšãããéçžäºäœçš/ã¹ã«ã©ãŒã®ç¹æ§ãå®çŸ©ããããããå埩å¯èœã®ç¹æ§ãå®çŸ©ããæ¹ãã³ã¹ããããããªãããšãããããŸãã ã³ã¬ã¯ã·ã§ã³ä»¥å€ã®ãã¹ãŠã®ã¿ã€ãã¯ãããæç¹ã§ãã®Scalar
ç¹æ§ãå®è£
ããã®ã§ã¯ãªãããšæããŸããããã¯ãäžéšã®ïŒå Žåã«ãã£ãŠã¯ãŸããªïŒã±ãŒã¹ã§åœ¹ç«ã€å¯èœæ§ãããããã§ãã
ããã¯æåŸã®åŒŸäžžãèšåããŠãããç¹æ§ãã®ããã«èãããŸã
ããããæåŸã®ç®æ¡æžãã¯ãäœããå埩ãå®è£
ããå ŽåããããŒããã£ã¹ãããããå埩ããããšãæå³ããŸãâã¹ã«ã©ãŒç¹æ§ã¯ãªããªããŸãã ããã€ãã®äžè¬çãªæ確ã«å埩äžå¯èœãªã¿ã€ãïŒ Type
ãFunction
ãµãã¿ã€ããªã©ïŒã®å Žåã MethodError
å€æããNotIterable
ç¹æ§ãå¿
èŠã«ãªãå ŽåããããŸãã MethodError
ã1ã€ã®å€ïŒãã®ãªããžã§ã¯ãïŒãçæããå埩ã«å€æããŸãã ãªããããå¿
èŠã ã£ãã®ããå®éã«ã¯èŠããŠããŸããã
ã€ãŸããåºæ¬çã«ããã¹ãŠã®åŒæ°ãç¹°ãè¿ããŠãããŒããã£ã¹ãããããšããããšã¯ãã³ã¬ã¯ã·ã§ã³ä»¥å€ã®ãã¹ãŠã®åïŒç¹ã«ãNumberãSymbolãAbstractStringïŒã«å¯ŸããŠScalarïŒïŒãè¿ãããã«BroadcastStyleãå®çŸ©ããå¿ èŠãããããšãæå³ããŸããïŒ ããã¯ãæåŸã®ç®æ¡æžãã§èšåãããŠãããç¹æ§ãã®ããã«èãããŸãã
ãããã Number
ãã¹ãŠã®ã¹ã«ã©ãŒãµãã¿ã€ãã¯ããèªäœãå埩ãããããåé¡ãããŸããã ã·ã³ãã«çšã«å®çŸ©ããå¿
èŠããããŸãã AbstractString
ã¯ã³ã¬ã¯ã·ã§ã³ãšããŠæ©èœããŸãã
åãã¹ã«ã©ãŒãšããŠæ±ãããã®ã¡ãœãããå®çŸ©ããå¿ èŠãããèšèšã¯å«ãã§ãã ãããããã©ã«ãã§ããã¯ãã§ãã ãŸããæååããããŒããã£ã¹ãã®ã³ã³ãããšããŠæ±ãã¹ãã§ã¯ãªããšæããŸãã
ç§ã¯ãŸã ããããŒããã£ã¹ãã¯HasShapeã€ãã¬ãŒã¿ã®ã¿ãã³ã³ãããšããŠæ±ãã¹ãã ãšæããŸãã ããã¯æåããæŸéã®ãã¶ã€ã³ãšäžèŽããŠããŸãã äœãåé¡ãªã®ã§ããïŒ
ããã«é¢ããåé¡ã¯OPã®åé¡ã§ãã 圢ç¶ã®ãªãã€ãã¬ãŒã¿ãããå Žåããããã¹ã«ã©ãŒãšããŠæ±ããšãããããªçããåŸãããŸãã
ãŸããææ¡ã®ãç¹åŸŽãã®éšåãåé€ã§ããã°å¹žãã§ãã 誰ãæå¥ãèšããªã
julia> map(string, [1,2], :a)
ERROR: MethodError: no method matching start(::Symbol)
ãããããOPã®çµæãäºæããªãçç±ã¯ã_all_åŒæ°ãã¹ã«ã©ãŒãšããŠæ±ããããŒããã£ã¹ãåŒã³åºããå®éã«æå³ããŠãã人ãããªãããã§ãã åŒæ°ã1ã€ã ãã§ããããã³ã¬ã¯ã·ã§ã³/ã€ãã¬ãŒã¿ãšããŠæ±ãæ¹æ³ããŸã£ãããªãå Žåã¯ãã»ãŒç¢ºå®ã«ãŠãŒã¶ãŒãæå³ããŠãããã®ã§ãã ãã¡ãã1 .+ 1
ã¯åŒãç¶ãæ©èœããã¯ãã§ããïŒ
ããã¯ç§ã«ã¯èµ·ãããŸãããã1ã€ã®è°è«ãç¹å¥ãªå Žåã«ããã®ã¯æ··ä¹±ããŠããããã§ãã
次ã®é察称æ§ãèŠãããŸããã€ãã©ãã«ãã¹ã«ã©ãŒãšããŠæ±ããšãæ¬åœã«å¥åŠãªçµæãåŸãããŸãããã¹ã«ã©ãŒãã€ãã©ãã«ãšããŠæ±ããšãšã©ãŒãçºçããŸãã ãšã©ãŒãçºçããå Žåã¯ãåŒæ°ãã©ããããããšã§ç°¡åã«ä¿®æ£ã§ããŸãã äžæ¹ãæåã®ã±ãŒã¹ã§ã¯ãåŒæ°ãå埩åŠçããããã«ã§ããç°¡åãªããšã¯äœããããŸããã
ç§ã¯ãŸã ããããŒããã£ã¹ãã¯HasShapeã€ãã¬ãŒã¿ã®ã¿ãã³ã³ãããšããŠæ±ãã¹ãã ãšæããŸãã ããã¯æåããæŸéã®ãã¶ã€ã³ãšäžèŽããŠããŸãã äœãåé¡ãªã®ã§ããïŒ
@stevengjäœãåé¡ãªã®ããšãããšãå®å
šã«åççãªåäœãå®è£
ã§ãããšãäžéšã®æäœãæ©èœããªããªããšããããšã§ãã HasLength
ã€ãã¬ãŒã¿ããçŸåšç¹æ®ãªã±ãŒã¹ã§ããTuple
ãšåãããã«æ±ããŸãã çŸåšãµããŒãããŠããªããŠãã1.xã®ããæç¹ã§ãµããŒãã§ããå¯èœæ§ãæ®ããããšæããŸãã
誰ãæå¥ãèšããªã
ãžã¥ãªã¢> mapïŒstringã[1,2] ãïŒ aïŒ
ãšã©ãŒïŒMethodErrorïŒstartïŒ:: SymbolïŒã«äžèŽããã¡ãœããããããŸãã
@JeffBezanson OTCãç§ã¯broadcast
ã®çŸåšã®åäœããµããŒãããŸãããã:a
ãå¿
èŠã«å¿ããŠDataFrame
åã®ååãå€æŽããå Žåãªã©ã«éåžžã«åœ¹ç«ã¡ãŸãã broadcast
ãå€æŽããŠã map
ãããªãšã©ãŒãã¹ããŒããããšããå§ãããŸããïŒ
次ã®é察称æ§ãèŠãããŸããã€ãã©ãã«ãã¹ã«ã©ãŒãšããŠæ±ããšãæ¬åœã«å¥åŠãªçµæãåŸãããŸãããã¹ã«ã©ãŒãã€ãã©ãã«ãšããŠæ±ããšãšã©ãŒãçºçããŸãã ãšã©ãŒãçºçããå Žåã¯ãåŒæ°ãã©ããããããšã§ç°¡åã«ä¿®æ£ã§ããŸãã äžæ¹ãæåã®ã±ãŒã¹ã§ã¯ãåŒæ°ãå埩åŠçããããã«ã§ããç°¡åãªããšã¯äœããããŸããã
ç°¡åã§ãããããªãäžäŸ¿ã§ãã ãšã©ãŒãçºçãããã®ã§ã¯ãªããã¹ã«ã©ãŒãããã©ã«ãã§ãããŒããã£ã¹ãããå¿
èŠããããšãã@stevengjã«åæããŸãã ãã¡ããã Number
ã¿ã€ãã¯å埩å¯èœã§ãããããç
©ããããåžžã«è¡šç€ºããããšã¯éããŸãããã Symbol
äŸã瀺ãããã«ãäžè¬çã«ã¯ããŸã圹ã«ç«ã¡ãŸããã Char
ã¯å¥ã®ãã®ã§ãããããã±ãŒãžã§å®çŸ©ãããå€ãã®ã«ã¹ã¿ã åãããã«æ©ãŸãããŸãïŒãããŠã BroadcastStyle
ãScalar()
ãšããŠå®çŸ©ããããšã«ãªããŸãïŒã
åé¡ã®æ žå¿ã¯ãã³ã¬ã¯ã·ã§ã³ãšã¹ã«ã©ãŒãåºå¥ããç¹æ§ããªãããšã ãšæããŸãã ãããã£ãŠãæãçŽæ¥çãªè§£æ±ºçã¯ã HasShape
ã€ãã¬ãŒã¿ãŒãã³ã¬ã¯ã·ã§ã³ãšããŠæ±ããä»ã®ã¿ã€ããã¹ã«ã©ãŒãšããŠæ±ãããšHasLength
ã€ãã¬ãŒã¿ãŒãå«ã¿ãŸãïŒã å人çã«ã¯ãã³ã¬ã¯ã·ã§ã³/ã€ãã©ãã«ã«ãã¬ã€ããå°å
¥ããããšã¯éåžžã«çã«ããªã£ãŠãããšæããŸããããããè¡ãæºåãã§ããŠããããã€ãã©ãã«ãæ€åºããããã«å®çŸ©ãããŠããstart
ã«äŸåã§ããªãå Žåã¯ãçŸåšã®åäœãç¶æããå¿
èŠãããã®ã§ã¯ãªãããšå¿é
ããŠããŸãã
https://github.com/JuliaLang/julia/issues/18618#issuecomment -360594955ã§ã®Jeffã®ææ¡ã«ã¯ã Symbol
ãšChar
ããã¹ã«ã©ãŒãã¿ã€ããšããŠåŠçãããããŒããã£ã¹ããèš±å¯ããäœå°ããããŸããåäœã«ãªããã€ã³ããå¿
èŠããããŸãã ããã©ã«ãã§ã¯ã start
å®è£
ããŠããªãããããšã©ãŒã«ãªããŸãã
ããã§æã説åŸåã®ããéšåã¯ããã³ã¬ã¯ã·ã§ã³ãã¿ã€ãã®å¯äžã®è³¢æãªå®çŸ©ã¯ããããå埩å¯èœã§ãããšããããšã§ãã ã¯ããããã¯æååãã³ã¬ã¯ã·ã§ã³ã§ããããšãæå³ããŸãã æã ãããã¯ãã®ããã«äœ¿ãããŸãïŒ ããã§ã人ã ãã³ãŒã«ãµã€ãã§ä»ã«ãªããã€ã³ããããšãç°¡åã«å¯èœã«ããæ¯ãèããããã©ã«ãã«ããŸãããã
ããããããã«ã¯ç£èŽ
ããããŸãã æ°å€ã¯å埩å¯èœã§ããããïŒ HasShape
ããïŒããŒã次å
ã®ã³ã³ãããŒãšããŠæ±ãããŸãã ã€ãŸããè«ççãªçµè«ãšããŠã 1 .+ 2 != 3
ã§ãã 代ããã«fill(3, ())
ã«ãªããŸãã
ç·šéïŒã¹ã¬ãããããã«è±ç·ãããªãããã«ããããã«ãè«è©±ã«ç§»åããŸããïŒ
ïŒ18618ïŒã³ã¡ã³ãïŒã§ã®Jeffã®ææ¡ã«ã¯ãSymbolãšCharããã¹ã«ã©ãŒãã¿ã€ããšããŠåŠçãããããŒããã£ã¹ããèš±å¯ããäœå°ããããŸããåäœã«ãªããã€ã³ããå¿ èŠããããŸãã ããã©ã«ãã§ã¯ãstartãå®è£ ããŠããªãããããšã©ãŒã«ãªããŸãã
ãããç§ã®ç«å Žã¯ãã¹ã«ã©ãŒãããèªç¶ãªãã©ãŒã«ããã¯ã§ãããšããä»®å®ã«åºã¥ããŠããŸããç¹ã«ãã³ã¬ã¯ã·ã§ã³ã¯ããã€ãã®ã¡ãœããïŒå埩ãå Žåã«ãã£ãŠã¯ã€ã³ããã¯ã¹ä»ãïŒãå®è£ ããå¿ èŠããããŸãããã¹ã«ã©ãŒã¯åãªããæ®ããã§ãããå ±éç¹ã¯ãããŸããã æçµçã«ã¯ãã©ã®ã¿ã€ãã§ãå¿ èŠãªåäœãå®è£ ã§ããŸãããå¯èœãªéã䟿å©ã§è«ççã«ããå¿ èŠããããŸããããã«ãããç¹ã«äžæŽåãåé¿ã§ããŸãïŒããšãã°ã宣èšãããŠã¹ã«ã©ãŒãšããŠåäœããã¿ã€ããšããã§ãªãã¿ã€ãããããŸãïŒã
ä»ã®ã¿ã€ãã®ã«ãŒã«ãæ確ã§ããéããæååãæ°å€ãªã©ã®å¿ é ã¿ã€ãã«ããã€ãã®äŸå€ãããããšã«ã€ããŠã¯ããŸãå¿é ããŠããŸããã
ç§ã¯å埩ãšã€ã³ããã¯ã¹ä»ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠå°ãèããŠããŸããã å埩ã§ããïŒãã ããã€ã³ããã¯ã¹ãä»ããããšã¯ã§ããªãïŒäŸ¿å©ãªãªããžã§ã¯ããã€ã³ããã¯ã¹ãä»ããããšãã§ããïŒãã ããå埩ã§ããªãïŒãªããžã§ã¯ããããã³ãã®äž¡æ¹ãè¡ããªããžã§ã¯ããããããšã«æ³šæããŠãã ããã ããã«åºã¥ããŠãç§ã¯çåã«æããŸãïŒ
map
匷ãå埩ãããã³ã«ã«çµã³ã€ããããšãã§ãã-æã
ãæ æ°äœãããšãã§ãããšããæå¹ãªããã out = map(f, iterable)
ä»»æã®ããã«iterable
ããã«äŸãã°first(out)
ã§ãf(first(iterable))
ãšåãã§ããããã®äžè¬çãªã¬ã€ãžãŒæäœã圹ç«ã€å¯èœæ§ãããããã«æãããŸããbroadcast
ã¯ãã€ã³ããã¯ã¹ã€ã³ã¿ãŒãã§ã€ã¹ã«åŒ·ãçµã³ã€ããŠããå¯èœæ§ããããŸã- out[i]
ãf(indexable[i])
ãšåãã«ãªãããã«ãæ æ°ãªout = broadcast(f, indexable)
ãäœæã§ããããšã¯æå¹ãªããã§ãããã®äžè¬çãªæ æ°ãªæäœã圹ç«ã€å¯èœæ§ãããããã«ç§ã«ã¯æããŸãã æããã«ãè€æ°ã®å
¥åãæã€broadcast
ãä»ã§ããã¹ãŠã®åã£ãããšãè¡ãããšãã§ããŸãã ãããŒããã£ã¹ãã®ç®çã§ã¯ãã¹ã«ã©ãŒã¯ã€ã³ããã¯ã¹ä»ãã§ããªããã®ã§ãïŒãŸãã¯ã Number
ãšRef
ãšAbstractArray{0}
ããã«ç°¡åã«ã€ã³ããã¯ã¹ä»ãã§ããŸãïŒããŸãã1ã€ã®åŒæ°map
ãš1ã€ã®åŒæ°broadcast
ããå埩å¯èœã§ã€ã³ããã¯ã¹ä»ãå¯èœãªã³ã¬ã¯ã·ã§ã³ã«å¯ŸããŠéåžžã«é¡äŒŒããåŠçãå®è¡ããããšãæãŸãããšæããŸãã ãã ãã AbstractDict
å埩ãgetindex
ãšã¯ç°ãªããã®ãè¿ããšããäºå®ã¯ãããã§ã®åªããçµ±åããããã¯ããŠããããã§ãã ïŒfrowning_face :(ä»ã®ã³ã¬ã¯ã·ã§ã³ã¿ã€ãã¯åé¡ãªãããã§ãïŒ
ïŒç§ã«ã¯ãæååã®ãããªãã®ã["bug", "cow", "house"] .* ("s",)
ããã«æ瀺çã«ã©ããããå¿
èŠããããããããªããšããäºå®ã¯ãããã§ã¯å€§ããããšã®ããã«ã¯èãããŸããã3ãã¯ãã«ã«ã€ããŠèããããšãã«åãåé¡ããããŸãã ãåäžã®3Dãã€ã³ããã§ãããåŠçããã®ã¯ããã»ã©é£ãããããŸããïŒxrefïŒ18379ïŒïŒã
broadcast
ã¯ã€ã³ããã¯ã¹ä»ãå¯èœãªã³ã³ããçšã§ããå¿
èŠãããããšã«åæããŸãããæååãé€ããŠãé£ç¶ããŠã€ã³ããã¯ã¹ä»ãå¯èœã§ããå¿
èŠããããšæããŸãã ããšãã°ã collect(eachindex("aαbðšÎ³z"))
ã¯[1, 2, 4, 5, 9, 11]
ãæäŸããŸãããããã¯ã€ã³ããã¯ã¹äœæã«åºã¥ãbroadcast
å®è£
ã§ã¯ããŸãæ©èœããŸããã
ããããã€ã³ããã¯ã¹å¯èœãªã³ã³ããã䜿çšãããšããããšã¯ãåºæ¬çã«ãã³ã³ããããªããã€ã³ããããã®ç¹æ§ãå¿ èŠãšãããšããããšã§ããããã¯åºæ¬çã«ç§ãæå±ããŠããããšã§ãã
é£ç¶ããã€ã³ããã¯ã¹ãé©åãªå¶çŽã§ãããã©ããã¯ããããŸãããããšãã°ãèŸæžã«ã¯ä»»æã®ã€ã³ããã¯ã¹ããããŸãã
ãã ãã broadcast(f, ::String)
ã¯æ°ããString
ãäœæã§ãããUTF-8æåå¹
ãf
ïŒãã®ä¿èšŒãè¡ãã«ã¯ã AbstractDict{Int, Char}
ãããªãã®ã«å€æããå¿
èŠããããŸãããããã¯å®éã«ã¯ããŸã圹ã«ç«ããªãããã§ãïŒïŒã String
ã€ã³ããã¯ã¹ã¯ãæå³çã«éèŠãªã€ã³ããã¯ã¹ãšããããããé«éã«ãã¯ã¢ããã®ãããŒã¯ã³ãã«äŒŒãŠãããšèšã£ãŠãéèšã§ã¯ãããŸããïŒããšãã°ãåçã®UTF-32æååã«å€æãããšãã€ã³ããã¯ã¹ãå€æŽãããŸãïŒã
ç¹æ§ãä»ããŠãããŒããã£ã¹ãåäœããªããã€ã³ããŠãããŸããŸããã äžè¬çãªbroadcast(f, ::Any)
ãã©ã®ããã«åäœããããæ³åããããšã¯ã broadcast(f, ::AbstractDict)
ãããªãã®ã®å®è£
ãå°ãè¯ãæ¹æ³ã§ãããšèšã£ãŠããã ãã§ãïŒãããŠãïŒ25904ã§æèµ·ãã質åã«èªç¶ã«çããŸããããŒãšå€ã®ãã¢ã§ã¯ãªãããã£ã¯ã·ã§ããªå€ïŒã
人ã ã¯ãã®å€åã«æ¬åœã«æºè¶³ããŠããŸããïŒ ç§ã¯ã圢ç¶ã®ãªãã³ã³ãããä»ããŠãããŒããã£ã¹ãããå¿ èŠã¯ãããŸããã§ããããåžžã«ã¹ã«ã©ãŒãšããŠæ±ãããã¹ããã®ããããŒããã£ã¹ãã
ç§ã¯ã¹ã«ã©ãŒãšããŠæ±ãããã¹ããã®ã_åžžã«_æŸéããŠããŸãã
ãããã®çš®é¡ã¯äœã§ããïŒ
äœã§ãããŸããŸããã ããšãã°ãæé©åã¢ãã«ã¿ã€ãModel
ãšæ±ºå®å€æ°ã¿ã€ãVariable
ãå®çŸ©ããããã±ãŒãžã§ã¯ã解ããåŸã«å€ãååŸããx::Vector{Variable}
ãããå ŽåããããŸããé¢æ°value(::Variable, ::Model)::Float64
ã䜿çšããŠmodel
ãã¢ãã«åããŸãã 以åã¯ã次ã®ããã«è¡ãããšãã§ããŸããã
value.(x, model)
åŒæ°ã®åãä»ã®ããã±ãŒãžããã®ãã®ã§ããå Žåãããããã®ã§ããããã®åã®broadcastable
ã«ã¡ãœãããè¿œå ãããšããã®å Žåã¯åã®èäœæš©äŸµå®³ã«ãªããŸãã ãããã£ãŠã Ref
ãŸãã¯1èŠçŽ ã®ã¿ãã«ã䜿çšããå¿
èŠããããŸãã ããã¯å
æã§ããªãããšã§ã¯ãããŸããããç§ã®æèŠã§ã¯ãæ¯èŒçãããŸããªäœ¿çšãã¿ãŒã³ããµããŒãããããã«ãäžè¬çãªã±ãŒã¹ã®ãšã¬ã¬ã³ããã倧å¹
ã«äœäžããŸãã
ã¯ããç§ã¯ããªãã®äž»åŒµãç解ããŠããŸãããããŠç§ã¯ããããã®ãããªç¶æ³ã§è¿·æã§ããããšã«åæããŸãã ãšã¯èšããã®ã®ãå€ãæ¯ãèãã¯çµ¶å¯Ÿã«åé¡ããããŸããâããã¯ãããã©ã«ãã®ãã©ãŒã«ããã¯ãå Žåã«ãã£ãŠã¯æããã«ééã£ãŠããããã®ã®1ã€ã§ããã
ã€ãŸãã誀ã£ããã©ãŒã«ããã¯ãåé¿ãã4ã€ã®ãªãã·ã§ã³ããããŸãã
iterate
ããããšãããšãã¹ã«ã©ãŒã§ãšã©ãŒãçºçããŸãiterate
ãã¡ãœãããšã©ãŒãã¹ããŒããããšãè¡šæããå¿
èŠããããŸãã ããã¯é
ããŠé åãã§ããapplicable(iterate, âŠ)
ã確èªããããã«å¿ããŠåäœãåãæ¿ããŸããªãã·ã§ã³1ã¯èª°ã«ãšã£ãŠãæªãããšã§ããããªãã·ã§ã³2ã¯çŸç¶ã§ããããªãã·ã§ã³3ã¯éæ¹åã§ããããªãã·ã§ã³4ã¯ãããŸã§ã«è¡ã£ãããšã®ãªããã®ã§ããããã°ãçºçããå¯èœæ§ããããŸãã
è°è«ã®äžéšã¯èå°è£ã§è¡ãããã«éããªããšæããŸããããã®ã¹ã¬ãããšhttps://github.com/JuliaLang/julia/pull/25356ã§nalimilan
ã«å¯ŸããŠèŠãè°è«ã«ã¯ç¢ºä¿¡ãæãŠãŸããã stevengj
ã®äœçœ®ã
ã«ã¹ã¿ã ã³ã³ããã§ãšã©ãŒãçºçããªãããã«äœ¿çšã§ãããšã¹ã±ãŒããããã¯1ã€ã ãã§ããã©ã€ãã©ãªã®äœæè ã¯ããããŒããã£ã¹ããæ瀺çã«ãªããã€ã³ããŸãã ããã¯ãäž»ãªç®çãã³ã³ãããŒãæäœããããšã§ããé¢æ°ã«ãšã£ãŠã¯ããªãéã«æããŸãã
ãããç§ã®æèŠã®çžéã®äž»ãªãã€ã³ãã§ãã ç§ã«ã¯ããã¹ãŠã®Juliaã³ãŒãã§# of iterator types
<< # of types that should be treated as scalars in a broadcast situation
< # of broadcast calls
ããã«èŠããŸãã ãããã£ãŠããäœåãªãäœããå®è¡ããå¿
èŠãããåæ°ãããããŒããã£ã¹ãã³ãŒã«ã®æ°ã§ã¯ãªããã€ãã¬ãŒã¿ã¿ã€ãã®æ°ã«æ¯äŸããå Žåã¯ããããå§ãããŸãã ãŸããã©ã€ãã©ãªã®äœæè
ãã€ãã¬ãŒã¿ãå®çŸ©ããå Žåããã1ã€ã®ã¡ãœãããå®çŸ©ããããã«äŸé Œããã®ã¯å®å
šã«äžåçã§ã¯ãããŸãããããã¹ãŠã®ããã±ãŒãžã®äœæè
ã«ãå埩äžå¯èœãªãã¹ãŠã®åã«å¯ŸããŠBase.broadcastable(x) = Ref(x)
ãå®çŸ©ããããã«äŸé Œããã®ã¯å®å
šã«äžåçã§ãã broadcast
åŒã³åºãã®é«ãå²åã§ãéãïŒIMHOïŒ Ref
é¿ããŸãã
å埩ãå®çŸ©ããããã«å®è£
ããåäžã®ã¡ãœãããããããšã¯çŽ æŽãããããšã§ãããæ°ããç¹æ§ã®ããã«ããŸãã¯æ°ããã€ãã¬ãŒã¿ãŒã®ããã«Base.iteratorsize
ãæå®ããå¿
èŠãããããã«ããããã«ãã1ã€å®è£
ããããšã¯ããã»ã©å€ãã®äœæ¥ã§ã¯ãããŸããïŒãããŠåé¡ã®ããHasLength
ããã©ã«ããåãé€ããŸãïŒã ãã©ãŒã«ããã¯broadcastable
ã¡ãœããã¯ããã®ç¹æ§ã«åºã¥ãããšãã§ããŸãã ãŸãã¯ãåäžã®ã¡ãœããã§å埩ãå®çŸ©ããããšã«æ¬åœã«å€¢äžã«ãªã£ãŠããå Žåã¯ã httpsïŒ//github.com/JuliaLang/ã®ããã«ãæ瀺çãªãã¬ã€ããããã©ã«ãã§applicable(iterate, ...)
ã«ããããšãã§ããŸãïŒpost-deprecation-removalïŒ ã julia / issues / 18618ïŒissuecomment -354618742ãå¿
èŠã«å¿ããŠãã®ããã©ã«ãããªãŒããŒã©ã€ãããã ãã§ãã String
ãããªã³ãŒããŒã±ãŒã¹ããå¿
èŠã«å¿ããŠbroadcastable
ããã«ç¹æ®åããããšã§åŠçã§ããŸãã
ããã¯äºå®äž0.6ã®èšèšã§ããããã®åé¡ãçºçããïŒ26421ãšïŒ19577ãšïŒ23197ãšïŒ23746ãªã©ãçºçããŸããããããæ€çŽ¢ããã®ã¯å°é£ã§ãã
ããã¯ãBaseãããªããžã§ã¯ãã®ã¯ã©ã¹å šäœã«å¯ŸããŠæ£ãããªãããã©ã«ãã®ãã©ãŒã«ããã¯ãæäŸããŠããããšãæå³ããŸãã ã ããç§ã¯ãäœããã®æ¹æ³ã§ãªããã€ã³ããªãéããšã©ãŒãçºçããã¡ã«ããºã ã奜ã¿ãŸãã ããã¯æèŠãããã移è¡ã¯èŠçã§ãããããã¯ããªãã«æ確ã«ããããšã匷å¶ããŸãã
ã€ãã¬ãŒã¿ã®ãããªã«ã¹ã¿ã ã¿ã€ãããããã¹ã«ã©ãŒã®ãããªãã«ã¹ã¿ã ã¿ã€ãã®æ¹ãå€ãã®ã¯æ£ãããããããŸããããç§ã¯ãããŒããã£ã¹ããäœããããŸãã³ã³ããã§ã®æäœã§ãããšããäºå®ãæ¯æããŠããŸãã f.(x)
ã¯ã f(x)
ã ãã§ãªããããçš®ã®ãããã³ã°ãè¡ãããšãæåŸ
ããŠããŸãã
ãããŠæåŸã«ãã¹ã«ã©ãŒããã©ã«ãåŠçãååŸããã³ã³ããã¯ããããŒããã£ã¹ãã§èŠçŽ ããšã«äœ¿çšããããšã¯ã§ããŸããã ããšãã°ã String
ã¯ãã¹ã«ã©ãŒã®ããã«åäœããããã«ç¹å¥ã«ã±ãŒã¹ã«å
¥ããããã³ã¬ã¯ã·ã§ã³åã§ãã ç¶æ³ã«ãã£ãŠã¯æå³ãããããã«èŠããŸããïŒããšãã°ã isletter.("a1b2c3")
ïŒããæã䌞ã°ããŠãèŠçŽ ããšã«äœæ¥ããããšã¯ã§ããŸããã ãããé察称æ§ã®è°è«ã§ããå®éã«ãããŒããã£ã¹ãå¯èœãªã³ã¬ã¯ã·ã§ã³ã«collect
ããããããRefã§ã³ã³ãããŒãããå¹ççã«ã©ããããŠãã³ã³ãããŒãã¹ã«ã©ãŒãšããŠæ±ãããšãã§ããŸãã
ããããäž»ãªè°è«ã§ãã Refã®éãã«é¢ããŠã¯ãç§ã¯å®å šã«åæããŸãã 解決çã¯ïŒ27608ã§ãã
ãã£ããã ã ç§ã¯ãããã®åé¡ã«å¯Ÿããããã¯ããŠã³ã®è°è«ãéæ³ã®è§£æ±ºçãæã£ãŠããŸããããããŠhttps://github.com/JuliaLang/julia/pull/27608ã¯ç©äºãæ¹åããã§ãããã
@tkoolenç§ã¯åãæžå¿µãšãŠãŒã¹ã±ãŒã¹ãæã£ãŠããŸããã
æå®ãããåŒæ°@mbaumanäžèšèª¬åŸåååã§ã¯ãªããããããŸããã ããå®å šã«ããããã®2ã€ã®è³ªåããããŸãã
1ïŒ broadcastable
å埩å¯èœã«ããããã«å¿
èŠãªã€ã³ã¿ãŒãã§ãŒã¹ã«ããããšã¯å¯èœã§ãã
ããã¯å®å
šã«äœç³»çã§ãããéçºè
ã«èããããã§ããã
ã€ãã¬ãŒã¿ããããŒããã£ã¹ãã®äžã§ã©ã®ããã«åäœãããã
collect(x)
ãšããŠèšå®ããããšããå§ããããšãã»ãšãã©ã®å Žåã移è¡ãæ¯èŒçç°¡åã«ãªããŸãã
ããã©ãŒãã³ã¹ã®äœäžã¯ãããŸããããïŒ
2ïŒã€ãŸãã x
ãã¹ã«ã©ãŒãšããŠãããŒããã£ã¹ããããå Žåã f.(x)
ãšã©ãŒãçºçãããšããæå¿ã«èŠçŽãããŸãã
ã 'f'ã®ãã¹ãŠã®åŒæ°ãã¹ã«ã©ãŒãšããŠãããŒããã£ã¹ããããããªã©ã f.(x, y, z)
ãªã³ã¿ãŒèŠå/ãšã©ãŒãçºçããªãã®ã¯ãªãã§ããïŒ
ãšã«ãããïŒ27563ãä¿®æ£ããŠïŒããšãã°ïŒ27608ã§ïŒã1.0ããå°ãåã«ãŠãŒã¶ãŒã«è©ŠããŠãããã®ãè³¢æãããããŸããã
[0.7ããã³1.0.0-rc1.0ã¯ä¿®æ£ãªãã§ãªãªãŒã¹ãããŸãã]ã
ãšã«ãããïŒ27563ãä¿®æ£ããŠïŒããšãã°ïŒ27608ã§ïŒã1.0ããå°ãåã«ãŠãŒã¶ãŒã«è©ŠããŠãããã®ãè³¢æãããããŸããã
[0.7ããã³1.0.0-rc1.0ã¯ä¿®æ£ãªãã§ãªãªãŒã¹ãããŸãã]ã
1.0ããªãªãŒã¹ããããšãããã¥ãŒã¹ãèŠéãããšæããŸãã
@StefanKarpinski確ãã«
æãåèã«ãªãã³ã¡ã³ã
ããã¯æå³çãªãã®ã§ãã
broadcast
ã¯åœ¢ç¶ã®ããã³ã³ããçšã§ãããã©ã«ãã§ã¯ãªããžã§ã¯ããã¹ã«ã©ãŒãšããŠæ±ããŸããmap
ã¯åœ¢ç¶ã®ãªãã³ã³ããçšã§ãããããã©ã«ãã§ã¯ãªããžã§ã¯ããã€ãã¬ãŒã¿ãšããŠæ±ããŸããããšãã°ã
broadcast
ã¯æååããã¹ã«ã©ãŒããšããŠæ±ããŸãããmap
ã¯æåãç¹°ãè¿ãåŠçããŸãã