Julia: ์ œ์•ˆ: ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ ํŒŒ์ดํ•‘ ์ œ๊ฑฐ

์— ๋งŒ๋“  2017๋…„ 01์›” 30์ผ  ยท  37์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: JuliaLang/julia

์ œ์•ˆ

ํ˜„์žฌ |> ๋ฅผ ํ•จ์ˆ˜ ํŒŒ์ดํ”„๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, x |> f ๊ตฌ๋ฌธ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜ ํ˜ธ์ถœ ๊ตฌ๋ฌธ f(x) ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ง€์› ์ค‘๋‹จ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด Base.:(|>) ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฒ˜์Œ์— tkelman์ด https://github.com/JuliaLang/julia/issues/16985#issuecomment -227015399์—์„œ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ๋ชจ๋ฐฉํ•œ๋‹ค๋Š” ์ฃผ์žฅ๊ณผ ํ•จ๊ป˜ ํ•จ์ˆ˜ ํŒŒ์ดํ•‘์˜ ๋‹ค์–‘ํ•œ ๊ตฌ๋ฌธ(ํŠนํžˆ #5571 ์ฐธ์กฐ)์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์Ÿ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ† ๋ก ์€ _ad nauseum_ ์žˆ์—ˆ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ด ์ œ์•ˆ์˜ ๋ชฉ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด๋ก ์  ํ•ด์„

์ž˜ ์ƒ๊ฐ๋˜๊ณ  ์ž˜ ์œ ์ง€๋˜๋Š” ๋งŽ์€ ํŒจํ‚ค์ง€๊ฐ€ ์ผ๋ฐ˜ ๋ฐ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ํŽธ๋ฆฌํ•œ ๋ฐฐ๊ด€ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•˜๋Š” ๋งคํฌ๋กœ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์—๋Š” Lazy.jl , FunctionalData.jl , Pipe.jl ๋ฐ ChainMap.jl ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

StefanKarpinski์™€ andyferris๋Š” #17155์—์„œ ์šฐ๋ฆฌ์—๊ฒŒ ์ž„์˜์˜ ํ•จ์ˆ˜ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ–ˆ์œผ๋ฉฐ ์ด๋Š” ๋งŽ์€ ์ƒํ™ฉ์—์„œ ์œ ์‚ฌํ•œ ๋ชฉ์ ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tkelman์ด #5571์—์„œ ์œ ์‚ฌํ•˜๊ฒŒ ์ฃผ์žฅํ–ˆ๋“ฏ์ด Base์˜ ํ•จ์ˆ˜ ํŒŒ์ดํ”„๋ผ์ธ์€ ์ต์ˆ™ํ•œ ํ˜ธ์ถœ ๊ตฌ๋ฌธ์—์„œ ๊ฑฐ๊พธ๋กœ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์–ธ์–ด์—์„œ ๋‘˜ ๋‹ค ๊ฐ–๋Š” ๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ๋™์ผํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ ์‚ฌ์šฉ์„ ๋ณด์ฆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Base์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๊ฒƒ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์†”๋ฃจ์…˜์€ ์ตœ์†Œํ•œ ์œ ์‚ฌํ•œ ์ •์‹  ๋ชจ๋ธ์„ ๊ณ ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฐ˜๋Œ€๋˜๋Š” ์ •์‹  ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ฐ์ฒด ๋’ค์— ์ž‘์—…์„ ์ ์šฉํ•˜์—ฌ ์ตœ์†Œ ๋†€๋ผ์›€์˜ ์›์น™์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, sum(x) sum() ๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ ์ธ์ˆ˜์˜ ๊ฐ’์„ ๋”ํ•  ๊ฒƒ์ž„์„ ์ฆ‰์‹œ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. x |> sum ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด x ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๊ฐ‘์ž๊ธฐ ํ•ด๋‹น ๊ฐ’์„ ๋”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Base ์†”๋ฃจ์…˜์€ ์ž‘์—…์„ ๋์— ๋ฐฐ์น˜ํ•˜์—ฌ ํŒŒ์ดํ”„๋ฅผ ์ด์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

Piping์€ ์‹ค์ œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด(์˜ˆ: Hadley Wickham์˜ %>% R in R(๊ธฐ๋ณธ R์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹˜))์—์„œ ์ „๋ก€๊ฐ€ ์žˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” ๊ทธ ์Šคํƒ€์ผ/ํ๋ฆ„์ด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Base Julia ๋‚ด์—์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด |> ๋ฅผ ์žฌ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ํŽธ๋ฆฌํ•œ ๋งคํฌ๋กœ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ดํ•‘ ๊ตฌ๋ฌธ์„ ํŒจํ‚ค์ง€์— ์ œ๊ณตํ•˜๋Š” ์ฑ…์ž„์„ ์—ฐ๊ธฐํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ํ•ญ๋ชฉ

์ด ์ œ์•ˆ์ด ๋ฐ›์•„๋“ค์—ฌ์งˆ ๊ฒฝ์šฐ ์‹คํ–‰ ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • [ ] Base ๋‚ด์—์„œ ๊ตฌ๋ฌธ ์‚ฌ์šฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค(์žˆ๋Š” ๊ฒฝ์šฐ).
  • [ ] 0.6 ๋˜๋Š” 1.0์—์„œ Base.:(|>) ์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์› ์ค‘๋‹จ ์ œ๊ณต
  • [ ] ํ›„์† ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ
deprecation design julep

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด * ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ? string(a, b) ์ค‘๋ณต๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ a ๋ฐ b ๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ตœ์†Œ ๋†€๋ผ์›€ ์›์น™์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ *(a, b) ๋Œ€ a * b ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ˜ธ์ถœ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ 3๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ํ•˜๋‚˜๋กœ ์ค„์ด๊ณ  ์™„์ „ํ•œ ์ผ๊ด€์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ•จ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๊ด„ํ˜ธ ๋‚ด๋ถ€๋กœ ์˜ฎ๊ธฐ๊ณ  ์ค‘๋ณต ์‰ผํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  37 ๋Œ“๊ธ€

ํ•จ์ˆ˜ ํŒŒ์ดํ•‘์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์œ„ํ•œ ์ ‘๋ฏธ์‚ฌ ๊ตฌ๋ฌธ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” ๋Œ€ํ™”ํ˜• ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ฐ ์ถ”๊ฐ€ ์‹œ๊ฐํ™”/์š”์•ฝ์„ ์œ„ํ•ด REPL์—์„œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์œ ํ˜•์„ ๋ณธ ๊ฒƒ์„ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š”

julia> somecomplicatedthingproducingarray
...

<ARROW UP>

julia> somecomplicatedthingproducingarray |> summarize

์—ฌ๊ธฐ์„œ summarize ํ•จ์ˆ˜๋Š” ํ”Œ๋กฏ ๋˜๋Š” ํžˆ์Šคํ† ๊ทธ๋žจ๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@jiahao ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Base ๋‚ด์—์„œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

repl ์‚ฌ์šฉ์„ ์œ„ํ•œ ans ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ œ์•ˆ์—์„œ |> ๋Š” ์—ฌ์ „ํžˆ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋ฉ๋‹ˆ๊นŒ?

@ajkeller34 : ํ™•์‹คํžˆ, ํŒจํ‚ค์ง€๋Š” ์˜๋ฏธ์ƒ์œผ๋กœ ์ด์ „ ํŒจํ‚ค์ง€์™€ ํ˜ธํ™˜๋œ๋‹ค๋Š” ์ œ์•ฝ ์—†์ด ํŒจํ‚ค์ง€๋กœ ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •์˜.

์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ Base ๋‚ด์—์„œ ๊ตฌ๋ฌธ ์‚ฌ์šฉ ์ œ๊ฑฐ

๋‹ค์Œ์€ ์ œ๊ฐ€ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋งค์šฐ ์˜ค๋ž˜๋œ ์‹œ๋„์ž…๋‹ˆ๋‹ค. https://github.com/tkelman/julia/commit/212727cdc4aaa3221763580f15d42cfe198bcc1c
๋‹น์‹œ ๊ธฐ์ง€์—์„œ์˜ ํ™œ์šฉ์€ ๋Œ€๋ถ€๋ถ„ ์•„์ฃผ ์‚ฌ์†Œํ•œ ๊ฒƒ์ด์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ์—์„œ "์ด๊ฒƒ์„ ์ด ์ต๋ช… ํ•จ์ˆ˜์— ํŒŒ์ดํ”„"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŒŒ์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํ…Œ์ŠคํŠธ์—์„œ ๋™์ผํ•œ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์žฌ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜ธ์ถœํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ์—์„œ ์ •์ƒ์ ์ธ ๊ธฐ๋Šฅ.

๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ์ด ์žˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์ง€๊ธˆ ChainRecursive.jl ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ChainMap.jl๊ณผ ๊ทธ ๋‹ค์–‘ํ•œ ์ž์‹์˜ ๋ถ„ํ•ด๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ด๋ก ์— ๋ฐœํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ธฐ๋“๊ถŒ์ด ์žˆ๊ณ  |> ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ํŠน๋ณ„ํ•œ ํ˜ธ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์•ฝ๊ฐ„์˜ ์ €ํ•ญ์„ ์ œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@jiahao ์™€ ํ•จ๊ป˜ ๋‘ ๋ฒˆ์งธ๋กœ |> ๋Š” REPL์—์„œ ๋น ๋ฅด๊ฒŒ ์‹œ๋„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€, ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ฃผ์žฅ์ด ๋„ˆ๋ฌด ํฌ๊ฑฐ๋‚˜ ์–ด๋Š ์ •๋„ ์นจ์ฐฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๋•Œ๋„ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ณด๋‹ค ์ธ์ˆ˜๊ฐ€ ๋” ๋‘๋“œ๋Ÿฌ์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. sum(x) ๋Š” ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ sum(x) ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Escher.jl์—์„œ ์š”์†Œ์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์—๋Š” ์ปค๋ฆฌ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ |> ์™€ ๋งค์šฐ ์ž˜ ์–ด์šธ๋ฆฝ๋‹ˆ๋‹ค(๊ณ„ํš๋œ ๊ฒƒ, map ์—์„œ๋„ ์ž˜ ์ž‘๋™ํ•จ). ๊ทธ๋ฆฌ๊ณ  ์ค„ ๋์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹œ๋„ํ•˜๊ณ  UI ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ธฐ์จ์ž…๋‹ˆ๋‹ค. ์ฆ‰์‹œ. ๋‚˜๋Š” ํ‘œํ˜„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„๊ณผ ์ฃผ๋ณ€์— ๋‚ด ๊ธธ์„ ์ฐพ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ Escher์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ๋Œ€์•ˆ์€ padded_box_contents_aligned_right_tomato_background (๋˜๋Š” ๋” ๋‚˜์œ box34 )์™€ ๊ฐ™์€ ๊ตฌ์„ฑ๋œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜์— ํฐ ํ‘œํ˜„์‹์„ ํ• ๋‹นํ•œ ๋‹ค์Œ ์ด์— ๋Œ€ํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฆ„๋‹ต๊ฒŒ ์ฝํžˆ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ <big UI expression> |> aligncontents(right) |> pad(1em) |> fillcolor("tomato")

์ด ํ›„์— Escher ๋‚ด |> ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์•„๋งˆ๋„ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ WARNING: using Escher.|> in module YourPackage conflicts with an existing identifier. ํŒจํ‚ค์ง€๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ๋‚ด ๋‘๋‡Œ๋ฅผ ์ฃฝ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” ๊ฑฐ์˜ ํ™•์‹คํžˆ ์ด๊ฒƒ์— ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋†€๋ผ์šด!

StefanKarpinski์™€ andyferris๋Š” #17155์—์„œ ์šฐ๋ฆฌ์—๊ฒŒ ์ž„์˜์˜ ํ•จ์ˆ˜ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ–ˆ์œผ๋ฉฐ ์ด๋Š” ๋งŽ์€ ์ƒํ™ฉ์—์„œ ์œ ์‚ฌํ•œ ๋ชฉ์ ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

box |> fill("orange") |> pad(2em) ๊ฐ€ ์•„๋‹ˆ๋ผ (fill("orange") โˆ˜ pad(2em))(box) box |> fill("orange") โˆ˜ pad(2em) ์ž…๋‹ˆ๊นŒ? ์ด ๋‘˜์€ ์ง๊ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

Escher๊ฐ€ ํด๋กœ์ €๋ฅผ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด ๊ตฌ๋ฌธ(๋‹จ์ผ ์ž…๋ ฅ, ๋‹จ์ผ ์ถœ๋ ฅ์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ์— ์‹ฌ๊ฐํ•œ ์ œํ•œ์ด ์žˆ์Œ)์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด DSL์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ ๋งคํฌ๋กœ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋” ์ผ๋ฐ˜ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ Base์˜ ์ •์˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ด ๊ตฌ๋ฌธ์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋” ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@shashi ๊ท€ํ•˜์˜ ์š”์ ์„ ์ดํ•ดํ•˜์ง€๋งŒ ๋ฌธ์ œ์—์„œ ์–ธ๊ธ‰ํ•œ ํŒจํ‚ค์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๋™์ž‘์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ์š”? ์˜ˆ๋ฅผ ๋“ค์–ด Escher ์˜ˆ์ œ์—์„œ FunctionalData๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ <strong i="6">@p</strong> vbox(<really big thing>) | pad(2em) ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ Lazy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ @> vbox(...) pad(2em) ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ Base์˜ ์ •์˜๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ด ๊ตฌ๋ฌธ์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋” ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์€ Escher.|>(...) ๋˜๋Š” Lazy.|>(...) ์ด๋ฏ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š”.

Base ์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ •์˜ํ•˜๊ณ  ๋‚ด๋ณด๋‚ด๋Š” ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ |> ๋ฅผ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ์š”?

@kmsquire ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. |> ๋Š” ์—ฌ์ „ํžˆ ํ˜„์žฌ์™€ ๊ฐ™์ด ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋˜๋ฉฐ Base์— ๊ฐ’์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งคํฌ๋กœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ํ˜ธ์ถœ ํ‘œํ˜„์‹์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋˜์ง€๋งŒ ๊ฐ’์ด ์—†๋Š” <| ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๊ทธ๊ฒƒ์ด ์ •์˜๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ

julia> dump(:(a <| b))
Expr
  head: Symbol call
  args: Array{Any}((3,))
    1: Symbol <|
    2: Symbol a
    3: Symbol b
  typ: Any

ํŒจํ‚ค์ง€๋Š” + ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” Base.:(<|) ์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ข‹์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€๋Š” ๋งคํฌ๋กœ์—์„œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

FWIW, ์—ฐ๊ฒฐํ•˜๋Š” ๋™์•ˆ ๋ชจ๋“  ๊ฒƒ์ด ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์œผ๋กœ ์••์ถ•๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ‰๊ฐ€ ์ค‘์— ์—ฐ๊ฒฐ ํŒจํ‚ค์ง€๊ฐ€ |> ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๊ฐ€ |> ๋ฅผ ์ •์˜ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ •ํ™•ํžˆ base์˜ ์ •์˜๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋Œ€์‹  ์—ฐ๊ฒฐ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ. ์—ฐ๊ฒฐ๊ณผ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ข‹์€ ์˜ˆ๋Š” DataFramesMeta ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์— ๋Œ€ํ•ด * ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ? string(a, b) ์ค‘๋ณต๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ a ๋ฐ b ๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ตœ์†Œ ๋†€๋ผ์›€ ์›์น™์„ ์œ„๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ *(a, b) ๋Œ€ a * b ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ํ˜ธ์ถœ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ 3๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ์„ ํ•˜๋‚˜๋กœ ์ค„์ด๊ณ  ์™„์ „ํ•œ ์ผ๊ด€์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ•จ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๊ด„ํ˜ธ ๋‚ด๋ถ€๋กœ ์˜ฎ๊ธฐ๊ณ  ์ค‘๋ณต ์‰ผํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

|> ๋Š” ์—ฌ์ „ํžˆ ํ˜„์žฌ์™€ ๊ฐ™์ด ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋˜๋ฉฐ Base์— ๊ฐ’์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งคํฌ๋กœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Base์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@bramtayl ์€ ์ข‹์€ ์ง€์ ์„ ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๊ฐ€ ์ •์˜๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด |> ๊ทธ๊ฒƒ์€ ์ •ํ™•ํžˆ ์ •์˜๊ฐ€ ๊ธฐ๋ณธ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ ์ •์˜ํ•˜๋Š” ๋‘˜ ์ด์ƒ์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๊ทธ๊ฒƒ์„ ์ค‘์œ„์–ด๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งคํฌ๋กœ ๋‚ด์—์„œ |> ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Base์—์„œ ์ •์˜๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์š”์ ์€ |> ๋Š” Base์˜ ์ƒํ™ฉ์— ๊ด€๊ณ„์—†์ด ๋งคํฌ๋กœ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ œ์•ˆ์˜ ์š”์ ์€ Base๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ธก๋ฉด์—์„œ ์ผ๊ด€๋˜๊ฒŒ ๋งŒ๋“  ๋‹ค์Œ ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ํŒŒ์ดํ•‘ ๋™์ž‘์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๊ฐ€ ํŠนํžˆ |> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. <| ๋˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@ararslan ๋งž์•„์š”, ๊ทธ๊ฑด ์ œ๊ฐ€ ๋ฌป๊ณ  ์‹ถ์€ ๊ฒŒ ์•„๋‹ˆ์—ˆ์–ด์š”. ๋ฐ”๋กœ ๋Œ“๊ธ€์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , ๋‚˜๋Š” "ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ธก๋ฉด์—์„œ ์ž์ฒด ํฌํ•จ๋œ ๊ธฐ๋ณธ" ๊ฐ์ •์„ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งคํฌ๋กœ๊ฐ€ ์•„๋‹Œ ์ปจํ…์ŠคํŠธ์—์„œ |> ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ |> ๊ฐ€ ๋†€๋ž๊ธด ํ•˜์ง€๋งŒ ์ดˆ๋ณด์ž์—๊ฒŒ ๋ฐฐ์šธ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ REPL์˜ ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— |> ๊ฐ€ ๋‹ค๋ฅธ ์ค‘์œ„ ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์žฌ๋ฏธ์žˆ๊ณ  ํ•จ์ˆ˜๋Š” ๊ฐ’์ผ ๋ฟ์ด๋ผ๋Š” ๊ตํ›ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ํ˜•์‹์ ์ธ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘๋‹จ ๋ฐ/๋˜๋Š” ๊ตฌ๋ฌธ ๋ณ€๊ฒฝ์„ ๋งˆ์ง€๋ง‰์ด ์•„๋‹Œ ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ์˜ ์‹œ์ž‘ ์‹œ์ ์— ๋…ผ์˜/๊ฒฐ์ •ํ•˜์‹ญ์‹œ์˜ค. ํ˜„์žฌ ๋ชจ๋“  ์ฃผ์š” ๊ฐœ๋ฐœ์ž์™€ ํŒจํ‚ค์ง€ ์ฑ…์ž„์ž๋Š” 0.6์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„๊ณผ ์—๋„ˆ์ง€๋ฅผ ์†Œ๋น„ํ•˜๋ฉฐ ๋‹ค๋ฅธ (์ข‹์€) ์•„์ด๋””์–ด๋ฅผ ์ƒ๊ฐํ•  ์‹œ๊ฐ„์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ๊ฐ€ ์ผ๊ด€์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค."

๋•Œ๋•Œ๋กœ ์œ ์šฉ์„ฑ์ด ์ผ๊ด€์„ฑ์„ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๊นŒ? ๋ถˆ์ผ์น˜๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ |> ๊ตฌ๋ฌธ์ด ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ œ๊ฑฐ๋˜๋ฉด ๋‚˜๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‚ด ๊ฑฐ๋ถ€ ํˆฌํ‘œ์— ๋Œ€ํ•œ ์„ค๋ช…:

ํ˜„์žฌ Base์— ์žˆ๋Š” ๊ฒƒ์˜ ๋Œ€๋ถ€๋ถ„์€ ๋Œ€์‹  ํŒจํ‚ค์ง€์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „์„ ํŒจํ‚ค์ง€๋กœ ์˜ฎ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ •๋ ฌ ๋ฐ ์…”ํ”Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ˆ˜์ง‘ ์ž‘์—… ๋“ฑ? Base์— ๋ฌด์—‡์ด ํฌํ•จ๋˜์–ด์•ผ ํ•˜๊ณ  ๋ฌด์—‡์ด ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ธธ๊ณ  ์ž์„ธํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡๋ช‡ ๊ธฐ๋Šฅ์ด base์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
1) ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ์—์„œ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
2) ๊ทธ ๊ธฐ๋Šฅ์€ ์–ธ์–ด์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด๋ฉฐ ๋งŽ์€ Julia ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์Šค์Šค๋กœ ๋กค๋งํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ชจ๋‘๊ฐ€ ๋™์˜ํ•˜๋Š” ๋‹จ์ผ ๊ตฌํ˜„/๊ตฌ๋ฌธ์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.
3) ๊ธฐ๋ณธ์— ๊ทธ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฉด "์›์‹œ" Julia๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋” ์ฆ๊ฒ๊ฒŒ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋” ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๋Š๋ผ๊ฒŒ ํ•˜์—ฌ ์–ธ์–ด ์ „๋„ ๋ฐ ์ฑ„ํƒ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

sum ์™€ ๊ฐ™์€ ๊ฒƒ์€ ์•„๋งˆ๋„ 3๊ฐœ ํฌ์ธํŠธ ๋ชจ๋‘์— ๋„๋‹ฌํ•  ๊ฒƒ์ด๋ฉฐ, ์ €๋Š” ํ•จ์ˆ˜ ํŒŒ์ดํ•‘์ด ๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ํฌ์ธํŠธ์— ๋„๋‹ฌํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ(์ž˜ ์ž‘์„ฑ๋œ) ์ œ์•ˆ๊ณผ ์ด ์Šค๋ ˆ๋“œ์˜ ๋…ผ์˜์—์„œ ๊ณตํ†ต ์ฃผ์ œ๋Š” Lazy.jl, Pipe.jl, ChainMap.jl ๋“ฑ ๋งคํฌ๋กœ๋ฅผ ํ†ตํ•ด ํŒŒ์ดํ”„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์˜ ์กด์žฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€ ์ค‘ ๋งŽ์€ ์ˆ˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํŒŒ์ดํ•‘์ด ์œ ์šฉํ•˜๊ณ  ๋ฐ”๋žŒ์งํ•œ ๊ธฐ๋Šฅ์ž„์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์‹œ์‚ฌํ•˜๋ฉฐ, ์ด ํ† ๋ก  ์Šค๋ ˆ๋“œ์— ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์—ฌ๊ธฐ ์žˆ๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํŒŒ์ดํ•‘ ์‚ฌ์šฉ์„ ์ดํ•ดํ•˜๊ณ  ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ๊ด€์ด Julia ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ๊ธฐํƒ€ ์–ธ์–ด์—์„œ ์ผ๋ฐ˜์ ์ด๊ณ  ์ธ๊ธฐ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ด ํ† ๋ก ์—์„œ๋„ ์‚ฌ๋žŒ๋“ค์€ ํŠนํžˆ REPL(Julia๊ฐ€ ๋น›๋‚˜๋Š” ๊ณณ)์—์„œ ๋งŽ์€ ์šฉ๋„๊ฐ€ ์žˆ๊ณ  Julia ์ƒํƒœ๊ณ„์— ์ด๋ฏธ ๋‹จํŽธํ™”๊ฐ€ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ..my ์ฝ๊ธฐ๋Š” Base์—์„œ ์ œ๊ฑฐ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Base์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ดํ•‘ ๊ตฌ๋ฌธ์ด ํ–ฅ์ƒ๋˜์–ด ์กฐ๊ฐํ™”์˜ ํ•„์š”์„ฑ์ด ์ค„์–ด๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”Œ๋กœํŒ…์˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์ธ๊ธฐ ์žˆ๋Š” ํŒจํ‚ค์ง€๋Š” ๊ฝค ๋ฌด์„ญ๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

๋” ๋‚˜์•„๊ฐ€ Base์—์„œ ํŒŒ์ดํ”„๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ๋†€๋ผ์šด ์ผ์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. Julia์—์„œ๋Š” ์ž์‹ ์˜ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ค‘์œ„ ์—ฐ์‚ฐ์ž |> ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋ฐœ? ๊ทธ๊ฒƒ์ด ์ข‹์€ ๊ธฐ๋Šฅ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฌ๊ณ ํ•œ 10๊ฐœ ๋˜๋Š” 20๊ฐœ์˜ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํžˆ ํŒŒ์ดํ•‘์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋‹น์—ฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๊ทœ์น™๊ณผ ๋‹ค๋ฅธ ์ ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ์ฐจ์ด๋Š” ์ผ๋ถ€ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ๋น›์„ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  (์†์„ ์กฐ๊ธˆ ํ”๋“œ๋Š”) ๋ช…์‚ฌ๊ฐ€ ๋™์‚ฌ ์•ž์— ์˜ค๋Š” ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋“ค ์ค‘ ๋‹ค์ˆ˜๋Š” ์›์‹œ ํ•จ์ˆ˜ ์ ์šฉ์ด ๋‹ค๋ฃจ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ์— ์ •ํ™•ํžˆ ๊ตฌ๋ฌธ ์„คํƒ•์ž…๋‹ˆ๋‹ค. ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ x = 5 ํ• ๋‹น์€ ๋ช…์‚ฌ(๊ธฐํ˜ธ x )๋ฅผ ๋™์‚ฌ ์•ž์— ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ฐ’์— ๋ฐ”์ธ๋”ฉ). ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ getfield t.a ์œ ํ˜•์˜ ํ•„๋“œ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์‹ฌ์˜คํ•˜๊ฒŒ๋„ z[5] ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ์€ "from z ์—์„œ 5๋ฒˆ์งธ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ"์™€ ๊ฐ™์ด ์ฝํžˆ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ getindex(z, 5) ๋ณด๋‹ค ๋” ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์ข‹์€ ๊ธฐ๋Šฅ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฌ๊ณ ํ•œ 10๊ฐœ ๋˜๋Š” 20๊ฐœ์˜ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

<| , ++ , ...

์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ง€ ๋งํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ดํ”„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์œ ์šฉํ•˜๊ฒŒ ํˆฌํ‘œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค
์–ด๋Š ๋‚  ์ผ๊ด€์„ฑ.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋งค์šฐ ์„ ํ˜ธํ•˜์ง€๋งŒ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๋‚จ์•„์žˆ๋Š” ํ•œ ์‹ค์ œ๋กœ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ˆ˜๋ฐ˜๋˜๋Š” ๊ฒฝ์šฐ ํŒŒ์ดํ•‘ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด "์ตœ์†Œ ๋†€๋ผ์›€์˜ ์›์น™" ์ฃผ์žฅ์€ ์„ค๋“๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์ •์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฃผ์–ด-๋ชฉ์ ์–ด-๋™์‚ฌ ์–ธ์–ด์˜ ์›์–ด๋ฏผ์—๊ฒŒ๋Š” Julia์˜ ๊ตฌ๋ฌธ ๋Œ€๋ถ€๋ถ„์ด ์ตœ์†Œ ๋†€๋ผ์›€์˜ ์›์น™์„ ์œ„๋ฐ˜ํ•˜๊ณ  ํ•จ์ˆ˜ ํŒŒ์ดํ•‘์ด ๋‹ค์†Œ ํŽธ์•ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค...

์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์ง€ ์•Š์Œ

๐Ÿ˜•

๋‚˜๋Š” ํŒŒ์ดํ”„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ํŒŒ์ดํ”„ํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด์˜ ์—ฌ๋Ÿฌ ํŒŒ์ดํ•‘ ํŒจํ‚ค์ง€ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Base ํŒŒ์ดํ”„๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด Base๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ค€์ˆ˜ํ•˜๊ฑฐ๋‚˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ํ•„์š” ์—†์ด ํŒจํ‚ค์ง€๊ฐ€ ์ž์ฒด ํŒŒ์ดํ”„ ์˜๋ฏธ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Julia์—์„œ๋Š” ์ž์‹ ์˜ ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฑด ์‚ฌ์‹ค์ด ์•„๋‹ˆ์•ผ; ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. martinholters๊ฐ€ ์ง€์ ํ–ˆ๋“ฏ์ด <| ๋ฐ ++ ๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ค‘๋ฆฝ์ ์ด์ง€๋งŒ |> ๊ฐ€ ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ตฌ๋ฌธ์—์„œ ๊ฑฐ๊พธ๋กœ ๋œ ๊ฒƒ์ด ์š”์  ์ด๋ผ๋Š” ๊ฐ์ •์„ ๋‘ ๋ฒˆ์งธ๋กœ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ•‘์˜ ๊ฐ€์žฅ ์—ด๋ ฌํ•œ ํŒฌ์กฐ์ฐจ๋„ $#$1$# sin(x) ์™€ ํ•จ๊ป˜ ์‹ค์ œ๋กœ ์ค‘๋ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— (AFAIK) sin <| x ๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. |> ๋Š” ๋งŽ์€ ๊ด„ํ˜ธ ์—†์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ๋ฅด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ˆˆ๊ณผ ๋‘๋‡Œ์— ๋” ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

|> ๊ฐ€ ๋” ๊ฐ•๋ ฅํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด x |> f(_) + 2g(_) |> h ๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ๋‹จ์ˆœํžˆ ์—ฐ์‚ฐ์ž๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ x |> f ๋ฅผ f(x) ์ด์™ธ์˜ ์˜๋ฏธ๋กœ ์ •์˜ํ•  ๋•Œ๋งˆ๋‹ค ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•œ ์—ฐ์‚ฐ์ž์˜ ์š”์ ์€ ๋‹ค๋ฅธ ์ˆœ์„œ ํ˜ธ์ถœ ๊ตฌ๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ๋‹นํ™ฉ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœ์„ ์˜ค๋ฒ„๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— x |> f ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ์ข‹์€ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@StefanKarpinski ๋” ๊ฐ•๋ ฅํ•œ ํŒŒ์ดํ”„๋Š” ์ด๋ฏธ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๋Š” ๊ตฌ๋ฌธ์„ ์ •ํ™•ํžˆ ์ œ๊ณตํ•˜๋Š” Pipe.jl ์„ ์ฐธ์กฐํ•˜์„ธ์š”. |> ๊ฐ€ ์—ฐ์‚ฐ์ž์ธ ํ•œ(์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ |> ๊ฐ€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค), ๋งคํฌ๋กœ๋Š” ์ค‘์œ„๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ ํ•˜๋Š” ํŒŒ์ดํ”„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :call . ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ดํ”„์— @~ ๋ฅผ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ ์–ด๋„ ์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์—์„œ). ์ด๋Ÿฌํ•œ ์ˆ˜์ค€์˜ ์œ ์—ฐ์„ฑ์€ Julia์—์„œ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

Pipe.jl์˜ ๊ธฐ๋Šฅ์„ ์–ธ์–ด์— ์ถ”๊ฐ€ํ•˜๋ฉด @pipe ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š” ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

|> ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ›จ์”ฌ ๋” ์ข‹์•„ํ•˜๋Š” ๋‹ค๋ฅธ ๋ชฉ์ ์„ ์œ„ํ•ด ๊ตฌ๋ฌธ์„ ํšŒ์ˆ˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ดํ•‘์ด ์–ธ์–ด์˜ ์ผ๋ถ€์ผ ํ•„์š”๋Š” ์—†์œผ๋ฉฐ ํŒจํ‚ค์ง€์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ |> ์— ๋Œ€ํ•ด ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด ๊ทธ (์‚ฌ์†Œํ•œ) ์ •์˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ Base์—์„œ |> ์˜ ์šฉ๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์ œ์•ˆ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Base์—์„œ ์ •์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋‚ด ์ฃผ์žฅ์€ ๊ธฐ๋Šฅ ์†์‹ค ์—†์ด ๋” ๋งŽ์€ ์ผ๊ด€์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"๋” ๊ฐ•๋ ฅํ•œ ํŒŒ์ดํ•‘" ์ œ์•ˆ์ด๋‚˜ ํŒจํ‚ค์ง€ ๊ตฌํ˜„์ด ์ด ๊ธฐ์กด ์ •์˜์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๊ฑฐ๋‚˜ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋„๋ก ํ•จ์œผ๋กœ์จ ๋” ๊ฐ„๋‹จํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ararslan "์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ค‘์œ„ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ฌธ ๋ถ„์„๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

์ˆ˜๋™ "&& ๋ฐ || ์—ฐ์‚ฐ์ž"์—์„œ ๊ตฌ๋ฌธ ๋ถ„์„๋˜์ง€๋งŒ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค). ๋‚˜๋Š” ์œ ์ผํ•œ ์˜ˆ์™ธ๋ฅผ ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์†Œ์œ„ "๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž" && ๋ฐ || ์ธํ”ฝ์Šค์ž…๋‹ˆ๋‹ค. [๋‹จํ•ญ ์ด์ง„ ๊ด€๊ณ„] "์—ฐ์‚ฐ์ž"๋Š” IMHO๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ์šฉ์–ด์ž…๋‹ˆ๋‹ค. Not์€ ๋…ผ๋ฆฌ์  ๋น„ํŠธ & ๋ฐ | ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(ํ™•์‹คํ•˜์ง€ ์•Š์€ ์„ ํƒ์ด ์ข‹์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค).

@PallHaraldsson & , | , + ๋“ฑ๊ณผ ๊ฐ™์€ ์˜๋ฏธ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ์ œ์–ด ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ์—ฌ๊ธฐ์—์„œ ์ฃผ์ œ์— ๋จธ๋ฌผ๋„๋ก ๋…ธ๋ ฅํ•ฉ์‹œ๋‹ค.

@tkelman ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฏธ๋ž˜์˜ ํŒŒ์ดํ•‘ ๊ตฌ๋ฌธ์„ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด _ ๊ฐ€ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์œผ๋ฉด $ |> ์ธ์ˆ˜์— _ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด |> ๊ฐ€ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ง€๊ธˆ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. |> ๊ฐ€ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด |> ๋˜๋Š” "ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž"(์˜ˆ: ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€)๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๊นŒ? f(x) ๋ฐ x |> f ๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด $ |> ๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋‚ด์žฅ ๊ตฌ๋ฌธ์ธ ๊ฒฝ์šฐ ๋” ๊นจ๋—ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ํ•ฉ์˜๋Š” ๋งค์šฐ ๋ช…๋ฐฑํžˆ ๋ฐ˜๋Œ€์ด๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ† ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตํ™˜์›์„ ์ง€์ผœ์ค˜์„œ ๊ณ ๋ง™๋‹ค๋Š” ๋ง์„ ์ „ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰