ã¢ãžã¥ãŒã«ã·ã¹ãã ã®å Žåããããè¡šèšã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŠäœ¿çšã§ããŸãã
import ArgParse
...
ArgParse.add_argument(p, "--opt1")
...
ããã¯ãåå空éã®æ±æãé²ãã®ã«åœ¹ç«ã¡ãŸãã ãã ããã¢ãžã¥ãŒã«åã¯åé·ã§ãããããã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ããããšäŸ¿å©ã§ãã
import ArgParse as ap
...
ap.add_argument(p, "--opt1")
...
ç§ã¯æ°ååã«ããªãã次ã®ããšãã§ããããšã«æ°ã¥ããŸããïŒ
import ArgParse
ap = ArgParse
ap.add_argument(...)
ãã ããæ§æç³è¡£ãšããŠãimportasãè¡šèšã䜿çšãããšãããšæããŸãã
ç§ãããã«ããŠããã«ã€ããŠèããŠããéã @ JeffreySarnoffã®ãã©ãŒã©ã æçš¿ã§èšåãããŠããããã«ãåãã€ã³ããŒãè¡ã«è€æ°ã®ç¹å®ã®é¢æ°ãã€ã³ããŒãããæ¹æ³ããããšäŸ¿å©ã§ãã åé¡ãæ€çŽ¢ããŠãããã®ãããªèŠæ±ã¯ãŸã æããã«ãªããŸããã§ããã
äœãã®ãããªãã®
# from the forum post
import Module.(export1,export2,export3)
# or
import Module.[export1,export2,export3]
# or maybe
import Module.{export1,export2,export3}
ãããšã¯å¥ã®åé¡ã§ãããé¢é£ããŠããŸãã ããã»ãããã
ïŒç§ã¯ãã®ãããªæ©èœã®æçšæ§ã¯ç©è°ãéžããã®ã§ã¯ãªããšæããŸã...ïŒ
ç·šéïŒããã¯import Module: export1, export2, export3
ã§åäœããããã«ãªããŸãã
äŸãã°ããµããŒãããã¹ãã ãšæããŸã
import ArgParse.add_argument as addarg
ã€ã³ããŒãæã«ã¢ãžã¥ãŒã«ã¡ã³ããŒã®ååãå€æŽã§ããããã«ããŸãã
ååãå€æŽãããé¢æ°åããã£ã¹ãããã«ã©ã®ããã«åå ããã®ãçåã«æã£ãŠããŸããïŒ
åºæ¬çã«ã¯ã const foo = Base.bar
ã«çžåœãããšã€ãªã¢ã¹ã®ããã«æ©èœããå¿
èŠããããŸãã
åºæ¬çã«ã¯ãšã€ãªã¢ã¹ã®ããã«æ©èœããå¿ èŠããããconst foo =ãšåçã§ãã
Base.barãé¢æ°ãã€ã³ããŒããããšãã¯ãããã䜿çšãããããªãŒããŒã©ã€ãããäºå®ã§ãã äžãããã
äžèšã
Base.barãfooãšããŠã€ã³ããŒãããŸã
fooãBase.barãšããŠäœ¿çšããããšã¯ééããããŸããããfooãå®çŸ©ãããšãªãŒããŒã©ã€ãããããšãã§ããŸã
Base.barïŒ ãããå¿
èŠã§ããïŒ
ããã¯å€ãåé¡ã§ããã0.2ã«è¿ã¥ããŠããã®ã§ããããåæ€èšããæãæ¥ããšæããŸãã
ã³ãŒããæžããšããç§ã¯ãã€ãimport NumericExtensions as ne
ãæžããããšæã£ãŠããã®ã§ãããã¯ãµããŒããããŠããªãããšãèªåèªèº«ã«æãåºãããŠããŸããŸããã
ãããå®è£ ããã®ã¯ããã»ã©é£ããããšã§ã¯ãªããšæããŸããç§ã®æèŠã§ã¯ãããã¯æžããããã¯ããã«åªããŠããŸãã
import NumericExtensions
const ne = NumericExtensions
+1
+1
ããã¯ãŸã é¢ä¿ããããŸããïŒ å人çã«ã¯ãã¢ãžã¥ãŒã«ã®ãšã€ãªã¢ã·ã³ã°ã®ããã«è¿œå ã®foo = Foo
ãå®è¡ããã ãã§ãããŸããŸãããããšã€ãªã¢ã·ã³ã°ã·ã¥ã¬ãŒããµããŒãããããã®ã³ã³ã»ã³ãµã¹ããã£ãããã§ãã ååã«åŒ·ãæããŠãã人ã¯ãèªåã§PRãããªããã°ãªããªããããããŸããã
ãã ãã x as y
ã¯ãïŒ1470ã§èª¬æããconvert(y,x)
æ§æã®æ匷ã®åè£ã®1ã€ã§ããããšã«æ³šæããŠãã ããã 2ã€ãæ確ã«ããã®ã¯ããã»ã©é£ããããšã§ã¯ãªãããã§ããã泚æããã ãã§ãã
ãã®æ©èœã®äŸ¡å€ã¯ãå ã®ååã®ã€ã³ããŒããåé¿ã§ããããšã§ãã
+1
ãã®æ©èœãããã°çŽ æŽããããšæããŸãã
+1
æ°ããããŒã¯ãŒãas
ãå°å
¥ããã®ã§ã¯ãªãã次ã®ããã«=>
æŒç®åã䜿çšããã®ã¯ã©ãã§ããããã
import Tlahuixcalpantecuhtli => Venus: xxxxxxxxx => x9, yyyyyyyy => y8, zzz
ããã«ãããåãæ§æã§ã¢ãžã¥ãŒã«ãšå€æ°ã®ãµãã»ããã®ãšã€ãªã¢ã·ã³ã°ãçŽäº€ããŠå¯èœã«ãªããŸãã
ããããªããããã¯ç§ã«ã¯æ¬åœã«éãããã ã
import Tlahuixcalpantecuhtli as Venus: xxxxxxxxx as x9, yyyyyyyy as y8, zzz
ããã¯ãã£ãšããã§ããïŒ ç§ã¯ãããã¯ããã«èªã¿ã«ãããšæããŸãã
ç§ã¯å人çã«ã as
ã¯=>
ãããèªæã§ãããšæããŠããŸããããã¯ãããã€ãã®ããšãæå³ããå¯èœæ§ãããããã§ãã
å®å šãªé瀺ïŒPythonãã€ã¢ã¹ã
as
ããã$ =>
æ§æã®æ¹ã奜ãã§ãã
ç§ã¯ããã·ã¥åè¡¡ã§ç«ã¡åŸçããŠããèªè»¢è»å°å±ã奜ãã§ãã
ã¢ãžã¥ãŒã«ã®å éšã·ã³ãã«ãåãã€ã³ãããã®ã¯ãªãã§ããïŒ ããªããæ¬åœã«ãããããã¹ãã§ã¯ãªãã®ã§ããã®éãã
Haskellã®ã€ã³ããŒãæ§æã奜ãã§ãã Pythonã®åå空éã¯Juliaã®ã¢ãžã¥ãŒã«ããããã现ãããšæããŸãã ãžã¥ãªã¢ã®ã¢ãžã¥ãŒã«ã¯ããã¹ã±ã«ã®ã¢ãžã¥ãŒã«ããã粟ç¥çã«æããããã®ã§ãã€ã³ã¹ãã¬ãŒã·ã§ã³ãåŸãããã«ãããæ¢ãå¿ èŠããããããããŸããã
ç§ã¯@ssfrrã«åæããŸãas
ããŒã¯ãŒãã¯ã¯ããã«èªæã§ãããPython / HaskellãŠãŒã¶ãŒã«ã¯ããç¥ãããŠããŸãã èªã¿ãããã§@StefanKarpinskiã®åé¡ã解決ããã«ã¯ãPythonã®ãããªã¢ãããŒãã圹ç«ã¡ãŸãã
from Tlahuixcalpantecuhtli as Venus import xxxxxxxxx as x9, yyyyyyyy as y8, zzz
REPLãšè©±ããŠãããããªæ°ãããŸãã ããããç§ã¯ãã®çš®ã®ææ¡ãå®è¡å¯èœã§ã¯ãªãããšãç¥ã£ãŠããŸãã
from Tlahuixcalpantecuhtli as Venus import xxxxxxxxx as x9, yyyyyyyy as y8, zzz
ããã¯ãPythonã§æãå«ããªæ§æäžã®éžæè¢ã®1ã€ã§ãã æå³ãå°ãå€ããã«ã¯ãæåã®ããŒã¯ãŒããšãã¹ãŠã®é åºãå€æŽããŠãè¡å šäœãæ ¹æ¬çã«åé 眮ããå¿ èŠããããŸãã ããã¯ä»ã®èŒžå ¥åãšã¯å®å šã«ç°ãªã£ãŠèŠããã»ãšãã©åãããšããããšããäºå®ãèŠãé ããŠããŸãã ããã¯ã²ã©ãæ§æèšèšã§ããimoã§ãããè¡šé¢çã«ã¯è±èªã«äŒŒãŠããããšã«éãã眮ããŠããŸãã
ïŒ+1ïŒ as
ã®å ŽåãïŒ-1ïŒ from
ã®å Žå
import a => b: c => d, e => f
ã¯ãç§ã«ã¯å°ãPerl颚ã«æããŸãã
ç§ã¯ããã·ã¥åè¡¡ã«ã€ããŠèããããšããªããããã«ã€ããŠèªãã åŸãããããããæ§æãããšã¯æããªãã ããããé¢çœãããšã«ããã®ãã€ã¯ã·ã§ããã¯1æéã«10ã®å¿çããããŸãããéåžžã«éèŠãªïŒãããããé£ããïŒãšç§ã襲ãïŒ6984ã®ææ¡ã¯ãã³ã¡ã³ããªãã§4æéã«ãªããŸããïŒ
as
察=>
ã«é¢ããŠã¯ãã©ã¡ããçŸåšã®ç¶æ³ãããåªããæ¹åã«ãªãã§ãããã
ïŒ6984ã®è¯ãç¹@BobPortmann ã
=>
ã¯ããã«æé©ã ãšæããŸããFWIWã
ããããé¢çœãããšã«ããã®ãã€ã¯ã·ã§ããã¯1æéã«10ã®å¿çããããŸãããéåžžã«éèŠãªïŒãããããé£ããïŒãšç§ã襲ãïŒ6984ã®ææ¡ã¯ãã³ã¡ã³ããªãã§4æéã«ãªããŸããïŒ
ããŒãã³ãœã³ã®å ã ã®äŸãã§ã¯ããã®åé¡ã¯èªè»¢è»å°å±ã§ãããïŒ6984ã¯ååçã§ãã
:)
ç§ã¯ãã®éãããæ··ããã®ã¯å«ãã§ãããç§ã¯as
ã奜ãã ãšæããŸãã =>
ã¯å°ãææ§ã§ããããããèŸæžãšæ§æãå
±æããã®ã¯å¥åŠã§ãã ãã¶ã=
ã ããçã«ããªã£ãŠããŸãïŒ import Foo: x = y
ãããããè¡ãconst x = Foo.y
ãšåæ§ã§ãã
ä»ã«äœããªããšããŠããHaskellããã¥ã¡ã³ãã®ãã®è¡šã¯æ¬åœã«åœ¹ã«ç«ã¡ãŸãã ç§ã¯ããïŒç¹ã«ãžã¥ãªã¢ãæåã«åŠãã ãšãïŒããã€import
/ using
/ require
ã䜿çšãããããŸãã¯ãã€import Mod.thing
ã䜿çšãããã«ã€ããŠæ··ä¹±ããŸããã import Mod: thing
ã ç§ã¯å®éã«ã€ã³ããŒãã®ã³ãã³æ§æã®èª¬æãæ¢ããŠããŸããããèŠã€ãããŸããã§ããã
@jakebolewski Haskellã®æ§æã¯ããªãè¿ãããã§ããJuliaã®using
ã¯Haskellã®ïŒä¿®é£ŸãããŠããªãïŒ import
ãšåçã§ãããJuliaã®import
ã¯Haskellã®import qualified
ãšåçã§ãã
åºçºç¹ãšããŠããããçŸåšå©çšå¯èœãªã€ã³ããŒã/䜿çšæ§æã®è¯ãèŠçŽã§ããããšãããããç¥ã£ãŠãã誰ãã確èªã§ããŸããïŒ é¢æ°x
ãšy
Mod
ãããããšã¯ã¹ããŒããããŠããªãé¢æ°p
ãšq
ããããšããŸãã
import Mod
ã¯ã Mod.x
ã Mod.y
ã Mod.p
ãããã³Mod.q
$ããããããŸãã ã€ã³ããŒããããé¢æ°ã¯ãã¹ãŠã¡ãœããæ¡åŒµã«äœ¿çšã§ããŸã
using Mod
ã¯ã x
ã y
ã Mod.x
ã Mod.y
ã Mod.p
ãããã³Mod.q
$ããããããŸãã x
ãšy
ã¯ã¡ãœããæ¡åŒµã«ã¯äœ¿çšã§ããŸãããã Mod.*
ã¯äœ¿çšã§ããŸãã
import Mod.x, Mod.p
ã¯ã x
ã p
ã Mod.x
ã Mod.y
ã Mod.p
ãããã³Mod.q
$ããããããŸãã ãããã¯ãã¹ãŠã¡ãœããæ¡åŒµã«äœ¿çšã§ããŸãã
import Mod: x, p
ã¯import Mod.x, Mod.p
ãšåãã§ã
using Mod.x, Mod.p
ã¯ã x
ã p
ã Mod.x
ã Mod.y
ã Mod.p
ãããã³Mod.q
$ããããããŸãã x
ãšp
ã¯ã¡ãœããæ¡åŒµã«ã¯äœ¿çšã§ããŸãããã Mod.*
ã¯äœ¿çšã§ããŸãã
using Mod: x, p
ã¯using Mod.x, Mod.p
ãšåãã§ã
ç§ãç¥ãéãã using Mod
ã¯ã Mod
ã«ãã£ãŠãšã¯ã¹ããŒãããããã®ãæ°ã«ããå¯äžã®äœ¿çšæ³ã§ãã
ã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ãã«ãã®èŠçŽããããšéåžžã«äŸ¿å©ã§ãã 誰ããããã確èªã§ããã®ã§ãPRãæºåã§ããŸããïŒ
æãè«äºã®å°ãªãããŒãžã§ã³ã¯æ¬¡ã®ããã§ãã
import Tlahuixcalpantecuhtli as Venus: xxxxxxxxx as x9, yyyyyyyy as y8, zzz
ãã£ãããã§ãã ãã ããå²ãåœãŠããŒãžã§ã³ã¯èå³æ·±ããã®ã§ããããã¹ãããŠã¿ãŸãã
import Venus = Tlahuixcalpantecuhtli: x9 = xxxxxxxxx, y8 = yyyyyyyy, zzz
å«ãã ãããšæã£ãŠããã®ã§ãããå®ã¯çµæ§ããã§ãã ãã®ã¢ãžã¥ãŒã«ã§çŽ¹ä»ãããŠããååãæåã«æ¥ãŠãæãç®ç«ã€ã®ã奜ãã§ããå€ãã®ç¹ã§ããããæãéèŠãªããšã§ãã
@jakebolewski ïŒã¢ãžã¥ãŒã«ã®å éšã·ã³ãã«ãåãã€ã³ãããã®ã¯ãªãã§ããïŒ ããªããæ¬åœã«ãããããã¹ãã§ã¯ãªãã®ã§ããã®éãã
2ã€ã®ç°ãªãã¢ãžã¥ãŒã«ããååãè¡çªãããã€ã³ãã£ã³ã°ãã€ã³ããŒããããå ŽåããããŸããããã«ããããããå¯èœã«ãªããŸãã ããããå®å šã«ä¿®é£Ÿããããšãã§ããŸããããšã€ãªã¢ã·ã³ã°ããµããŒãããŠããå Žåã¯ãããããµããŒãããããšããå§ãããŸãã
ããã€ãã®é©åã«é 眮ãããæ¹è¡ã¯ãIMOãããèªã¿ãããããŸãã
import Tlahuixcalpantecuhtli as Venus:
xxxxxxxxx as x9,
yyyyyyyy as y8,
zzz
ãŸã
import Venus = Tlahuixcalpantecuhtli:
x9 = xxxxxxxxx,
y8 = yyyyyyyy,
zzz
ç§ã¯å²ãåœãŠããŒãžã§ã³ãéåžžã«åŒ·ã奜ãããšãããããŸããã çµå±ã®ãšãããã€ã³ããŒãã¯å²ãåœãŠã®äžåœ¢æ ã§ãã
ã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ãã«ãã®èŠçŽããããšéåžžã«äŸ¿å©ã§ãã 誰ããããã確èªã§ããã®ã§ãPRãæºåã§ããŸããïŒ
@ brk00 ãé 匵ã£ãŠïŒ
@kmsquire ãä»æ¥ã¯ããã«åãçµã¿ãŸãïŒ
ãããããã®åã«ãç§ã¯ãããããç解ããŠããããšã確èªããããšæããŸãã @ssfrrã®äŸã§ã¯ãREPLã䜿çšããŠããŠã using Mod
ãšå
¥åãããšããŸãã ã€ã³ããŒããããé¢æ°x
ããã³y
ã¯ãã¡ãœããæ¡åŒµã«ã¯äœ¿çšã§ããŸããã ã€ãŸããå¥ã®xé¢æ°ãšyé¢æ°ã宣èšãããšãäžåºŠã€ã³ããŒãããMod
ã®ã¡ãœããã«ã¢ã¯ã»ã¹ã§ããªããªããæ°ããã¡ãœããã«ã®ã¿ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããïŒ
ããã¯ãé¢æ°ãã€ã³ããŒãããã«æ¡åŒµããããšãããšã©ããªããã§ãã
julia> module Mod
export x, y
x() = "x"
y() = "y"
p() = "p"
q() = "q"
end
julia> using Mod
julia> x()
"x"
julia> p()
ERROR: p not defined
julia> x(n) = n
ERROR: error in method definition: function Mod.x must be explicitly imported to be extended
次ã®ãããªã¡ãœãããè¿œå ã§ããŸãã
julia> import Mod: x # or import Mod.x
julia> x(n) = n
x (generic function with 2 methods)
julia> methods(x)
# 2 methods for generic function "x":
x() at none:5
x(n) at none:1
ããŠãç§ã¯åå解決ã®æ¯ãèãã«æ··ä¹±ããŸããïŒ
julia> module Mod
export x, y
x() = "x"
y() = "y"
p() = "p"
q() = "q"
end
julia> using Mod
julia> x(n) = n
x (generic function with 1 method)
using Mod
ã§ã€ã³ããŒãããé¢æ°ã䜿çšããåã«ãæ°ããé¢æ°ãx
ã«å²ãåœãŠãŠãããšã©ãŒã¯çºçããŸããã ããããããšãã°ãæ°ããå²ãåœãŠã®åã«x()
ãåŒã³åºããšïŒäŸã§è¡ã£ãããã«ïŒãå®éã«ãšã©ãŒãçºçããŸãã
ãããé¢çœãïŒ ç§ã¯ããã«ã€ããŠç¥ããŸããã§ããã using
ã®åŸã«åå空éã瀺ãããã«ãããŸããŸx
ãåŒã³åºããŸããã
ãã¶ããã³ã¢éçºè
ã®1人ãå
ãåœãŠãããšãã§ããŸãã x
ãåŒã³åºããããªãŒããŒããŒãã®è©Šè¡æã«ãšã©ãŒãããªã¬ãŒããããšã©ããªããŸããïŒ
äžèšã®@carlobaldassiã«ãã£ãŠææ¡ããããšã€ãªã¢ã·ã³ã°ã¯ãå®éã«ã¯éåžžã«äŸ¿å©ã§ãã
import
ãã¢ãžã¥ãŒã«ãªããžã§ã¯ããè¿ãã ãã§ã const
ã®æç¡ã«ããããããå²ãåœãŠã䜿çšããŠçŽæ¥ãšã€ãªã¢ã¹åã§ãããã©ããçåã«æã£ãŠããŸãã äŸãã°
const Shortname = import ModuleWithLongName
ãã以å€ã®
import ModuleWithLongName
const Shortname = ModuleWithLongName
ããã«ã¯ãæ°ããæ§æã¯å¿
èŠãããŸãããæ¢åã®æ§æèŠçŽ ã®çµã¿åããã ããå¿
èŠã§ãã çŸåšã import
ã¯ãã¹ããŒãã¡ã³ããã§ãããçŽç²ã«å¯äœçšã®ããã«åŒã³åºããã䟡å€ããªãããšãèªèããŠããŸãã ããŒãµãŒããããèš±å¯ããªãå Žåã¯ã import("Module")
ãŸãã¯åæ§ã®ãã®ããå§ãããŸãã
ã¢ãžã¥ãŒã«ããšã€ãªã¢ã¹ãããªãã·ã§ã³ã¯è¯ããããããªããšæããŸããã誰ãèšåããŠããªããšããæ¬ ç¹ããããšæããŸããããã¯ã³ãŒããããªãææ§ã«ããå¯èœæ§ããããŸãã ã³ãŒããªãŒããŒã®èŠ³ç¹ããã¯ãã¢ãžã¥ãŒã«ã®ããããããååã1ã€ã ãæã€ãšäŸ¿å©ã§ãã
ãããã調ã¹ãã®ã¯ããªãç°¡åã§ããïŒ ç瞮圢ã¯ã numpy
ã®np
ã®ãããªäººæ°ã®ããããã±ãŒãžã§ãæšæºåãããå¯èœæ§ããããŸãã
æšæºåãããnp
ãããnumpy
ã奜ã¿ã$ numpy
ãããArrays
ã奜ã¿ãŸãã numpy
ã¯ã1950幎代ã®ãã³ã¹ã®åããšèŽåœçãªç«ç
ã®éã®ã¯ãã¹ã®ããã«èãããŸãã
ç°¡åã«æžãããšãã§ããŸãïŒ
Base.require("ArgParse")
const ap = Main.ArgParse
ããã«ã¯1.0ã®æ§æã¯å¿ èŠãããŸãã
ãã®ããã®æ§æãå¿
èŠã ãšæããŸãã ã¯ãã require
ãšconst
ã®å²ãåœãŠãã§ããã®ã§ãããããªããŠãçããããšãã§ããŸããã require
ã䜿çšããã®ã¯ããªãéãã䟿å©ãªæ§æããªããããååãå€æŽã§ããŸããã圌ããæã/å¿
èŠãšããããã«ã
const
ã®ç°¡åãªããªãã¯ã¯ããã¯ãã®ãšã€ãªã¢ã¹ãäœæããå¿
èŠãããå Žåã«ã¯äžååã§ãããããç§ã®ããæ¹ã§ãããç解ããã®ã«æéãããããŸããã
julia> macro foo(a, b, c)
a, b, c
end
<strong i="8">@foo</strong> (macro with 1 method)
julia> macro f(args...)
Expr(:macrocall, Symbol("@foo"), args...) |> esc
end
<strong i="9">@f</strong> (macro with 1 method)
julia> <strong i="10">@f</strong> 1 2 3
(1,2,3)
ImportMacros.jlã§ç§ã¯å®è£ ããŠããŸãïŒ
<strong i="15">@from</strong> Foo.Bar use foo as f
<strong i="18">@from</strong> Foo.Bar use <strong i="19">@foo</strong> as @f
åç §ïŒ https ïŒ//github.com/fredrikekre/ImportMacros.jl/pull/3
@ Ismael-VC
è©Šã
<strong i="7">@eval</strong> const $(Symbol("@foo")) = $(Symbol("@bar"))
ããã¯éãã§ããããã¯ããããŒã«ã«ã§å®çŸ©ãããããçããããããããæ確ã§ã
@TotalVerbãããããé¡ãããŸãïŒ
Julia + ImportMacrosã«æ¬ ããŠããæ©èœã¯ãã¢ãžã¥ãŒã«ãšããã®ãããªã¢ãžã¥ãŒã«ããå¯å€æ°ã®ãªããžã§ã¯ãããšã€ãªã¢ã¹ãããšã€ãªã¢ã¹ãªãã§ä»ã®ãªããžã§ã¯ããã€ã³ããŒãããããšã®äž¡æ¹ããšã€ãªã¢ã¹ããããšã ãã®ããã§ãã
<strong i="9">@from</strong> Foo.Bar as B use foo as f, <strong i="10">@bar</strong> as <strong i="11">@b</strong>, baz
ãŸãã¯from
ãªãïŒ
import Foo.Bar as B: foo as f, <strong i="17">@bar</strong> as <strong i="18">@b</strong>, baz
import B = Foo.Bar: f = foo, <strong i="21">@b</strong> = <strong i="22">@bar</strong>, baz
æåŸã®ãã®ã¯ãã¯ãã§ã¯äžå¯èœã®ããã§ãïŒ
julia> parse("<strong i="26">@from</strong> Foo.Bar as B use foo as f, <strong i="27">@bar</strong> as <strong i="28">@b</strong>, baz")
:(<strong i="29">@from</strong> Foo.Bar as B use foo as (f,@bar(as,(@b(),baz))))
julia> parse("<strong i="30">@import</strong> Foo.Bar as B: foo as f, <strong i="31">@bar</strong> as <strong i="32">@b</strong>, baz")
:(<strong i="33">@import</strong> Foo.Bar as B:foo as (f,@bar(as,(@b(),baz))))
julia> parse("<strong i="34">@import</strong> B = Foo.Bar: f = foo, <strong i="35">@b</strong> = <strong i="36">@bar</strong>, baz")
ERROR: ParseError("unexpected \"=\"")
in #parse#310(::Bool, ::Bool, ::Function, ::String, ::Int64) at .\parse.jl:184
in (::Base.#kw##parse)(::Array{Any,1}, ::Base.#parse, ::String, ::Int64) at .\<missing>:0
in #parse#311(::Bool, ::Function, ::String) at .\parse.jl:194
in parse(::String) at .\parse.jl:194
ææ¡ãããæ§æã¯ãã¹ãŠãšã©ãŒãŸãã¯ãŸã£ãããã³ã»ã³ã¹ã§ããããããããå®éã«1.0ã§æ±ºå®ããå¿ èŠã¯ãããŸããã
å
ã®ã¢ãžã¥ãŒã«ãåå®çŸ©ãããå Žåãããšãã°REPLã®reload("...")
ã«ãã£ãŠãã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ã¯ã©ããªããŸããïŒ const M = MyModule
ã¢ãããŒãã§ã¯ã M
ã¯ãªããŒãåŸãå€ãã¢ãžã¥ãŒã«ãåç
§ããããã MyModule
MyModule.name
ã§ã®ã¿ã¢ã¯ã»ã¹ã§ããŸãããã¢ã¯ã»ã¹ã§ããŸããã M.name
ã
ãã®å Žåããšã€ãªã¢ã¹æ§æã¯const M = Module
ã®ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒä»¥äžã§ããå¿
èŠããããŸããã代ããã«M
ãåžžã«MyModule
ãšåããã®ãåç
§ããããã«ããŠãã ããã
ããã«ãããéçºäžã«ã¢ãžã¥ãŒã«ãimport
ç¶ç¶ã§ãããããREPLã¯ãŒã¯ãããŒãç°¡çŽ åãããŸãããæ¯åïŒ const
以å€ã®ïŒãšã€ãªã¢ã¹ãå確ç«ããããšãªããããçããšã€ãªã¢ã¹ãä»ããŠã¢ãžã¥ãŒã«ãåç
§ã§ããŸãã reload
ã
çŸåšã reload
ã¯åé€ãããŠããããããã®æžå¿µã¯é©çšãããªããªããŸããã
ããã¯include
ã«ãåœãŠã¯ãŸããŸããããããšãäœãã足ããŸãããïŒ äžè¬ã«ãã¢ãžã¥ãŒã«ãåå®çŸ©ããããšã import
edã¢ãžã¥ãŒã«åã¯æ°ããå®çŸ©ãåç
§ããå²ãåœãŠã«ãã£ãŠå®çŸ©ããããšã€ãªã¢ã¹ã¯å€ãå®çŸ©ãåç
§ããŸãã
ããããããã¯å¿é
ããå¿
èŠã¯ãããŸããã ã€ã³ããŒããããååã¯ãéåžžã®import
ãå«ããã¢ãžã¥ãŒã«ãåå®çŸ©ããããšãã«å€æŽãããããšã¯ãããŸããã å€æŽãããã®ã¯ãå床ã€ã³ããŒãããå Žåã«ã€ã³ããŒããããã¢ãžã¥ãŒã«ã§ãã ã€ã³ããŒãããããã®ã¯åžžã«åãªããã€ã³ãã£ã³ã°ã§ããã
ããããŸãããå€åç§ã¯èªåèªèº«ãæ確ã«è¡šçŸããªãã£ãã®ã§ãããã«äŸããããŸãïŒããªããå
容ã§ãã¡ã€ã«test.jl
ãäœæãããªãã°
module Tst
f() = 1
end
ããŒãããŠTst
ãã€ã³ããŒããã Tst
ã®ãšã€ãªã¢ã¹ãå®çŸ©ããã°ããã¹ãŠåé¡ãããŸããã
julia> include("test.jl")
Tst
julia> import Tst
julia> const Tst2 = Tst
Tst
julia> Tst.f()
1
julia> Tst2.f()
1
test.jl
ãã«å€æŽããå Žå
module Tst
f() = 2
end
ãããŠãREPLã§include
ãåå®è¡ãããšãã¢ãžã¥ãŒã«ãšãã®ãšã€ãªã¢ã¹ã®åäœãç°ãªããŸãã
julia> include("test.jl")
WARNING: replacing module Tst
Tst
julia> Tst.f()
2
julia> Tst2.f()
1
ãªããããªãã®ãã¯ããããŸããã import Tst as Tst2
ã®ãããªãšã€ãªã¢ã¹ãäœæããå Žåã¯ãããªããªãã¯ãã§ãã
ç§ã¯ããã0.6.2ã§ãã¹ãããŸããããçŸæç¹ã§ã¯0.7ã§ãã¹ãã§ããªãã®ã§ãããããŸã åœãŠã¯ãŸããã©ããã¯ä»ã¯ããŸããã
ããªãã¯ããããŸã£ããã€ã³ããŒãããŠããŸããã å«ããã¢ãžã¥ãŒã«ã¯ãã¹ã³ãŒãã§ãã§ã«å®çŸ©ãããŠããŸãã import
ã¯ããŒãªãã¬ãŒã·ã§ã³ã§ãã
æ¬åœã§ãããããã¯éèŠã§ã¯ãããŸããã éèŠãªã®ã¯ãæ¶ç©ºã®import Tst as Tst2
ã®ãããªããšããããšã©ããªãããšããããšã§ãã ãã®å Žåããã®ã¹ããŒãã¡ã³ãã¯ããŒãªãã¬ãŒã·ã§ã³ã§ã¯ãããŸãããããšã€ãªã¢ã¹ãäœæããŸãã
ãã®ãšã€ãªã¢ã¹ãconst Tst2 = Tst
ã®ããã«æ©èœããå Žåãã¢ãžã¥ãŒã«Tst
ãåå®çŸ©ãããšããšã€ãªã¢ã¹ã¯å€ãããŒãžã§ã³ã®ã¢ãžã¥ãŒã«ãæãããã«ãªããŸãã ããã¯ã©ã®ãããªå Žåã§ãæãŸãããããŸããã ãšã€ãªã¢ã¹ãæ°ããããŒãžã§ã³ã®Tst
ãæãããã«ãããããŠãŒã¶ãŒã«ãšã€ãªã¢ã¹ã®å確ç«ã匷å¶ããå¿
èŠããããŸãã ãã ããåŸè
ã®å Žåãå確ç«ããã«å€ããšã€ãªã¢ã¹ã䜿çšãããšãå€ãã¢ãžã¥ãŒã«ãæã代ããã«ãšã©ãŒãã¹ããŒãããŸãã
ãããå®å
šã«ãã€ã³ãã§ãã ãã®åé¡ã¯ãã¢ãžã¥ãŒã«å®çŸ©ã§ã¯ãªãimport
ã«é¢æ°ãè¿œå ããããšã«é¢ãããã®ã§ãã import
ã¯åäœãããåé€ãããšã³ãŒãã«import
ãŸãã¯using
ããªããªãããããã®åé¡ãšã¯é¢ä¿ãããŸããã ã¢ãžã¥ãŒã«ãimport
ãšåãã¹ã³ãŒãã§å®çŸ©ãããªãããã«å€æŽããŠãã ããã
import Tst as Tst2
ã¯ããã®ååã«ãã€ã³ããããŠãããã®ã«é¢ããŠã¯import Tst
ãšåãããã«æ©èœããŸããããã¯åžžã«ãã€ã³ãã§ãããå¿
èŠãªéæ³ã§ã¯ãããŸããã ããã¯ãã¢ãžã¥ãŒã«ãå®çŸ©ãããšãã«ãšã€ãªã¢ã¹ãè¿œå ããããšã§ã¯ãããŸããã
èšãæããã°ãããªãã®ã³ãŒãã¯åºæ¬çã«ã
a = Ref(1) # include
a = a # import
b = a # alias
a = Ref(2) # include again
ãŸãã a
ã¯a = a
ã«ãŸã£ãããã€ã³ããããŠããªãããã b = a
ã®åäœã«ã€ããŠæå¥ãèšãã®ã¯æå³ããããŸããã æªãäŸã§ã¯ãã€ã³ããŒããšåãã¹ã³ãŒãã§ã¢ãžã¥ãŒã«ãå®çŸ©ããããšã®å¯äœçšïŒã€ãŸããåãã¹ã³ãŒãã§a = a
ãša = Ref(...)
ïŒã衚瀺ãããŸãã
ããããŸãããç¶æ³ã«ãã£ãŠã¯ãå²ãåœãŠã«ãã£ãŠå®çŸ©ããããšã€ãªã¢ã¹ãæåŸ
ã©ããã«æ©èœããªãå ŽåãããããšãææããããšæããŸãã å€åç§ã¯æªãäŸãéžã³ãŸããã ããã¯ãã¢ãžã¥ãŒã«ãšã€ãªã¢ã¹ãäœæããæ§æïŒ import
ã«é¢é£ãããã©ããã«é¢ä¿ãªãïŒã«ãšã£ãŠéèŠãããããªããšæããŸããããçŸæç¹ã§ã¯ãããã¯ãšã«ãã仮説ã§ãã éšé³ã§ããããªããã
ãã®åé¡ã¯é·ãéååšããŠããŸããããããã€ãã®æ¡åŒµæ©èœã«ã€ããŠã¯ãŸã è°è«ããå¿ èŠããããŸããã
import LongPackage as longpkg
ããèªäœã¯ããªãåççãªããã§ãã
ãã³ãã ä»ã®ãšãããæåã®è§£æ±ºçã¯ã©ã®ãããªãã®ãçåã«æã£ãŠããŸããïŒ ãããç§ãããŠããããšã§ãïŒ
import LinearAlgebra
const linalg = LinearAlgebra
ããè¯ã解決çãããã°ç§ãèšæ£ããŠãã ããïŒ
ãããçŸåšã®åºæºã§ãã
ãæ§æã¯ã©ãã§ããïŒ åœ±é¿ã¯ããããŸããããèŠãç®ã¯çŽ æŽãããã§ãã ãŸãããã¯è¿äŒŒã®èšå·ãšããŠäœ¿çšãããŸãã
import LongPackage ~ lp
@JeffreySarnoffãStefanãåŒçš
@StefanKarpinski
ããã¯ãPythonã§æãå«ããªæ§æäžã®éžæè¢ã®1ã€ã§ãã æå³ãå°ãå€ããã«ã¯ãæåã®ããŒã¯ãŒããšãã¹ãŠã®é åºãå€æŽããŠãè¡å šäœãæ ¹æ¬çã«åé 眮ããå¿ èŠããããŸãã ããã¯ä»ã®èŒžå ¥åãšã¯å®å šã«ç°ãªã£ãŠèŠããã»ãšãã©åãããšããããšããäºå®ãèŠãé ããŠããŸãã ããã¯ã²ã©ãæ§æèšèšã§ããimoã§ãããè¡šé¢çã«ã¯è±èªã«äŒŒãŠããããšã«éãã眮ããŠããŸãã
ãã®å Žåããã¯Pythonæ§æã®è±èªã®ãããªåŽé¢ãšã¯äœã®é¢ä¿ããããŸããã ããèŠããšãè¿äŒŒã®æ°åŠçæŠå¿µãèªèããŠããã ãã ãšæããŸãã 10.001ã10ã
ã§ããããããããæå³ã§ã¯ãå®ã¯çµæ§ãããšæããŸãã
import LongPackage ~ lp
import HugePackage ~ hp
import MassivePackage ~ mp
import GiantPackage ~ gp
:-)
ããããŸãã-Pythonãå¿ããŠãã ãã-ç§ã¯ãã®ã³ã¡ã³ããåé€ããŠ
lp imports LongPlayingRecords
hp imports HewlettPackard
mp imports MilitaryPolice
gp imports PariForNumberTheory
ç§ã¯ããšããšããã奜ãã§ã¯ãããŸããã§ããããå€ãã®äººãèªç¶ã«ãããas
ã§æžããããšæã£ãŠããããã§ãã ããã¯æ確ãªæ§æã³ã³ããã¹ãã§ãããããããŒã¯ãŒããªã©ãšããŠäºçŽããå¿
èŠã¯ãããŸããã
人ã ã«ãããäœãæå³ããã®ããç¥ãããããã«_è©Šã¿ã_ããã°ã©ãã³ã°èšèªïŒïŒïŒ
@JeffreySarnoff
Pythonãããåªãããã®ã«ããããšããããã°ã©ãã³ã°èšèª!!!
@neilpanchal Juliaã¯ééããªããå€ãã®ç¹ã§PythonãããåªããŠããããšãè©Šã¿ãèšèªã§ãã äžæ¹ã§ãPythonãäœããæ£ããç解ããPythonãšã¯_ç°ãªã_ããšã¯ãæããã«ãã®æ¹æ³ããå€ããããšã¯ãããŸããã Juliaã¯ãPythonã®å·Šå³ã®æ§æèŠåãåçšããŠããŸãã
Python as
ãæ¡çšããŠãã ããã 圌ãã¯ãããæ£ããç解ããŸããã
julia> LightGraphsãlgãšããŠã€ã³ããŒã
ãšã©ãŒïŒæ§æïŒåŒã®çµããã®åŸã«è¿œå ã®ããŒã¯ã³ãasã
Pythonããé¢ããas
ãæ¯æãããã1ã€ã®$ 0.02ã³ã¡ã³ãã fwiwããžã¥ãªã¢ãå®æçã«äœ¿çšããŠããã®ã§ããããæããã§ãã Pythonã®å Žåãšã¯ç°ãªããClojureïŒäŸãåç
§ïŒã®å Žåãšåæ§ã«ãããã±ãŒãžã¹ã³ãŒãã®åå空éïŒææ§ãåé¿ã«é©ããŠããŸãïŒãç°¡ç¥åããŠãã©ã€ãã©ãªãæ瀺çã«äœ¿çšããæ¹ãã¯ããã«äŸ¿å©ã§ãã using
ïŒã€ãŸããã¯ã€ã«ãã«ãŒãã®ã€ã³ããŒãïŒãimport Gadlfy as gf
ã«æ§æäžã®ç ç³ãæããªãããã«ããããšã奜ãã®ã§ã const gf =
è¡ãè¿œå ããªãã§ãã ããïŒç§ãçŸåšè¡ã£ãŠããããšïŒäŸ¿å©ã«ãªããŸãã
as
æ§æããµããŒãããããã«å¥ã®ã³ã¡ã³ãïŒheartïŒå°æ¥ã®JuliaãªãªãŒã¹ã§æ¬åœã«é£ããããšãé¡ã£ãŠããŸãã
ç§ããããèµ·ããããšãæã¿ãŸãã ç¹ã«ããã¯é倧ãªå€åã§ã¯ãªãã®ã§ïŒããã§ããïŒïŒã
ããã¯ãã€ãå®è£
ããããšæããŸããïŒæéãäœãããšãã§ããã°èªåã§è©ŠããŠã¿ãŸãïŒããããŸã§ã®éã ImportMacros
ããã±ãŒãžã«ã¯ãããã§èŠæ±ãããæ©èœã®ã»ãšãã©ãã¹ãŠãå«ãŸããŠããŸãïŒããã¥ã¡ã³ãã¯ãããŸãããïŒ ïŒ
<strong i="8">@import</strong> ModuleA as ma
<strong i="9">@using</strong> ModuleB as mb
<strong i="10">@from</strong> ModuleC use long_function_name as func
<strong i="11">@from</strong> Module use <strong i="12">@macroname</strong> as <strong i="13">@alias</strong>
ImportMacros
.jlã«ã€ããŠç¥ããŸããã§ãããææããŠãããŠããããšãã ãã®æ©èœãããã±ãŒãžã«å«ãŸããŠããå Žåãåºæ¬èšèªã§äœ¿çšããããšã¯ããã»ã©éèŠã§ã¯ãªããšæããŸãã
ç§ã¯ãŸã ãããèšèªã§æã£ãŠããã®ã¯è¯ãããšã ãšæããŸãã
ã€ã³ããŒãã¯IMOã§ããããã¯ãã§ã©ããããããããã±ãŒãžã®äŸåé¢ä¿ãè¿œå ãããããã®ã§ã¯ãªããã»ãŒ_åžžã«_åºæ¬èšèªã®èŠåã«åŸãå¿
èŠããããŸãã import
... const
ã¯ãïŒç¹ã«ïŒ2ã€ã®ã¹ãããã®ããã»ã¹ãããç°¡æœã«ããããã«åºæ¬èšèªãæ¡åŒµãããŠããªãå Žåã§ãããã©ãŒã«ããã¯ããã®ã«é©ããŠããŸãã
ç¹ã«ãèŠãã®ã¯å°ãéãã§ã
using ImportMacros
<strong i="6">@using</strong> OtherPackage as ...
<strong i="7">@using</strong> ThirdPackage as ...
éãã¯ãusing
ãçªãåºãŠããããã§ãã
import
ãã¢ãžã¥ãŒã«/é¢æ°/å®éã«ã¹ã³ãŒãã«ãããããã®ãè¿ãã®ã¯ã©ãã§ããïŒ
ãã®åŸãããªãã¯æžãããšãã§ããŸãlg = import LightGraphs
baz = import foo.bar
baz, kit, kat = import foo : bar1, bar2, bar3
å€æŽãå¿
èŠãªã®ã¯ã€ã³ããŒãæ©èœã ãã§ã
@DhruvaSambraniã®ãœãªã¥ãŒã·ã§ã³ã¯ãJuliaã®å šäœçãªããã¹ãŠãè¡šçŸã§ãããã¢ãããŒãã«é©åããŠãããããç§ã¯æ¬åœã«æ°ã«å ¥ã£ãŠããŸãã
å¯äžã®ããšã¯ãäžè²«æ§ãä¿ã€ããã«ãã€ã³ããŒãåŒã¯ããã«ããŒã ãã¹ã³ãŒãã«å ¥ãããšããå¯äœçšãå®è¡ããå¿ èŠããããšããããšã§ãïŒããããçœå®³ã§ã¯ãããŸããïŒã ãã«ããŒã ãã€ã³ããŒãããªãããã«ç¹æ®ãªã±ãŒã¹ã«ããããšãã§ããŸãããç¹æ®ãªã±ãŒã¹ã¯ã°ãã¹ã§ãã
OCamlïŒæé«ã®ã¢ãžã¥ãŒã«ãåããèšèªïŒïŒã§ã¯ã次ã®ãããªããšãã§ããŸãã
module LG = LightGraphs
ããã§ã®éèŠãªéãã¯ãOCamlããã°ã©ã ã§ã³ã³ãã€ã«ããããã¹ãŠã®ã¢ãžã¥ãŒã«ã®ä¿®é£Ÿåãèªåçã«ã¹ã³ãŒãå ã«ããããšã§ãã
ãã¡ããã import LightGraphs as LG
ã䜿çšããããšã«ã¯ãã誰ãããPythonãããã§ã«ç¥ã£ãŠãããšããå©ç¹ããããŸãããç§ã®å人çãªå¥œã¿ã¯ãæåéãå²ãåœãŠã§ãããã®ã«å²ãåœãŠæ§æãåå©çšããæ¹ããããšããããšã§ãã
ãŸãã¯ãããåºç¯ãªå€æŽã¯ãã¿ã€ããšããŠãåå空éããå°å
¥ããããšã§ãïŒãã§ã«è¡ãããŠããå Žåã¯idkïŒã 次ã«ã import
ã¯ãã¢ãžã¥ãŒã«ãªã©ãåå空éã«å±éããŠãåå空éãè¿ãããšãã§ããŸãã ãã ãã import mod_name
ãå®è¡ããã ãã§ã¯ãã°ããŒãã«ã¹ã³ãŒãã§mod_name
åå空éã䜿çšã§ããªããããããã«ãããã¹ãŠã®Juliaã³ãŒããç ŽæããŸãã ã€ã³ããŒããå
è¡ããå²ãåœãŠãªãã§äœ¿çšããããšãã«ãäœããã®æ¹æ³ã§mod_name
åå空éãã°ããŒãã«ã§äœ¿çšã§ããããã«ããããšãã§ããã°ãããã¯åé¡ã§ã¯ãããŸããã
ãŸãã¯ãæ°ããé¢æ°import_as_ns(mod_name) :: Namespace
ãè¿œå ããã ãã§ããããã¯ãåäžã®åå空éã§ãã¹ãŠã®é¢æ°/ã¢ãžã¥ãŒã«ãªã©ãè¿ãçŽç²é¢æ°ã«ãªããŸãã
ããã¯ãžã¥ãªã¢ã®å šäœçãªããã¹ãŠãè¡šçŸã§ãããã¢ãããŒãã«é©åããŸã
ãã ãã import
ãšusing
ã¯ãå¯äœçšã®ããã«ã®ã¿äœ¿çšããããããã¬ãã«ã§ã®ã¿äœ¿çšããããããç¹å¥ã§ãã
ã¡ãªã¿ã«ããã®åé¡ã¯é·ãééãããŠããããšãèãããšãããªã¢ãŒãžã¯ãããåæ€èšããŠæ±ºå®ããããšãããšããªãã®ã§ã¯ãªãããšæããŸãã 以æ¥ãç§ã¯ééãæå±ããŸã
import Foo; const Bar = Foo
ã¯ããŠãŒã¶ãŒãåå空éã®Foo
ãæ°ã«ããªãå Žåã«ãå®ç§ãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸããçµå±ã®ãšãããç§ã¯ãŸã ãããèŠéããŠãããšèšããŸãïŒãããŠç§ã¯èªåã®ã³ãŒãã§ImportMacrosã䜿çšããŠããŸãïŒã
ç§ã¯ããªããæžããŠããã³ãŒããŒã®ã¹ã¿ã€ã«ãããã®å¿ èŠæ§ïŒãŸãã¯æ¬²æ±ïŒã«åœ±é¿ãäžãããšæããŸãã MLãç§åŠçãªã³ãŒããæžããŠãããšããç§ã¯ãããããŸãèŠéããŠããªãããšã«æ°ã¥ããŸãã é·ãååã®ããã±ãŒãžãå€æ°äœ¿çšããä»ã®ã³ãŒããæžãããšãã¯ãImportMacrosãæããã䜿çšããŠããããšãããããŸããã
ImportMacrosã§ååã§ãã ç§ã¯ãããããã»ã©ãããã«èŠããªããšããã³ã¡ã³ãã«åæããŸãã
ãŸãããšãã£ã¿ãŒã§ãªãŒããã©ãŒããã¿ãŒã䜿çšããŠã€ã³ããŒãã䞊ã¹æ¿ããããšãã§ããæ¥ã楜ãã¿ã«ããŠããŸã...ãããã @using
ãã©ãããã°ãããããããªãå¯èœæ§ããããŸã...
@kmsquireã«ãåæããŸããããã¯ããã»ã©å€§ããªåé¡ã§ã¯ãªããImportMacrosã§ååãªã¯ãã§ãã ãã ããã©ã®ãããªæ¹æ³ã§ããäºåºŠãšåºãŠããªãããã«ææžåããå¿ èŠããããŸãã
ãŸã m=import Module
ç ç³ã欲ããã®ã§ããð
ç§ã®ã¡ãã»ãŒãžãããã倧ããããšã§ã¯ãªãããšãæå³ããããšãæå³ããŠããŸããã§ããã
ç§ã¯ãŸã ãã®ããã®æ§æã奜ã¿ãŸãã
ImportMacrosã§ååã§ãã ç§ã¯ãããããã»ã©ãããã«èŠããªããšããã³ã¡ã³ãã«åæããŸãã
åæããŸãã ãŸãã次ã®å ŽåïŒ
using ImportMacros
<strong i="8">@using</strong> OtherPackage as ...
åå¿è ãããã°ã©ãã³ã°åå¿è ã«èšèªãæ瀺ãããšãã«ãç¹å®ã®ã¹ã¯ãªããããã®ççŸããå§ãŸãçç±ã説æããã®ã¯å°ãé¢åã§ããããã¯ãæµããè€éã«ããæè²ã®çŠç¹ãå€ããããã§ãã
ã©ã¡ãããç¹å¥ãªæ§æãä¿èšŒããããã«å®éã®ã³ãŒãã§éåžžã«é »ç¹ã«äœ¿çšãããŠããããã§ã
人ã
ãå®éã®ã³ãŒãã§ImportMacrosãããŸã䜿çšããªãçç±ã¯ããã¬ãŒããªããåå ã§ããå¯èœæ§ããããŸãã ããšãã°ãç§ã¯ã»ãŒæ¯åimport ... as ...
ã䜿çšããŸããããããè¡ãããã«æåã«å¥ã®ããã±ãŒãžãã€ã³ããŒãããå¿
èŠããªãå¯èœæ§ããããŸãã è¿œå ã®äŸåé¢ä¿ã ãã§ãªãããæ觊ãã®ç¹ã§ã圱é¿ããããŸãïŒãããŠãã³ãŒããæŽç·Žãããããã«èŠããã®ã奜ããªäººãããŸãïŒç¹ã«PythonãJuliaïŒð€·ââïžããããŠãã®using/@using
ã¯ããªããã¹ã¯ãªããã®å°å
¥ã«å¯ŸããããããŒãªé°å²æ°ïŒã
ããã§ããããImportMacrosã§ååã§ããã æ¬åœã«äœ¿ããã人ã®ããã«ã ããããããã¯éèŠãªåé¡ã§ã¯ãªãã人ã ã¯ãããªãã§åãããšãã§ããŸãã ããã«ãããããããç§ã¯éåžžãèšèªã®æ§æãåºå·ããã®ã¯ãããã®å°ããªããšã§ãããšåŒ·ãä¿¡ããŠããŸãããããã£ãŠããã®ã¢ã³ã¹ã¿ãŒã¹ã¬ããã¯ãã®ãµããŒããããŒã¹ã«è¿œå ããŸãã
import ... as ...
ã¯ééããªã䟡å€ã®ããç³è¡£æ§æã§ãããç解ãšèª¬æãéåžžã«ç°¡åã§ãããã±ãŒãžã®ååãããªãé·ãåŸåãããJuliaãªã©ã®èšèªã§ç¹ã«åœ¹ç«ã¡ãŸãïŒæããã«ãããã¯éèŠã§ãïŒäººã
ãusing ...
ããããããªããšããä»®å®ã®äžã§ã®ã¿ïŒã
ãããŠãPythonãæåã«ãããå®è£ ãããšããäºå®ã¯ãå®éã«ã¯é¢ä¿ããªãã¯ãã§ãã ãžã¥ãªã¢ã¯ãä»ã®èšèªããè·é¢ã眮ããããç¬èªã®ã¢ã€ãã³ãã£ãã£ã匷調ãããããåã«ãæé«ã®æ§æã䜿çšããããã«åªããå¿ èŠããããŸãã
ãã®ããã®æ§æãšäººæ°ã®ããã¢ãžã¥ãŒã«ã«é¢ããèŠåïŒç§ã¯ãããåžžã«import numpy as np
ãšimport matplotlib.pyplot as plt
ã§ããæ¹æ³ãèããŠããŸãïŒãã using SuchAndSuch
ãå®è¡ããŠexport
ã«äŸåãã代ããã«ç°¡æœãªä»£æ¿æ段ãæäŸããŸã
@DominiqueMakowski ïŒ
åå¿è ãããã°ã©ãã³ã°åå¿è ã«èšèªãæ瀺ããŠãç¹å®ã®ã¹ã¯ãªããããã®ççŸã§å§ãŸãçç±ã説æãã
ãªããããççŸã ãšæãã®ãç解ã§ããŸãããããã¯åã«åå空é管çã§ãããããã¯äžè¬çãªããã°ã©ãã³ã°ã®éåžžã®éšåã§ãã
ãŸããã¢ãžã¥ãŒã«ã®ååå€æŽã¯ãJuliaã®åå¿è ãæåã«ééãããã®ã§ã¯ãªãå ŽåããããŸãã
ãŠãŒã¹ã±ãŒã¹ããªããšèšã£ãŠããããã§ã¯ãããŸããããç¬èªã®ããŒã¯ãŒããæ£åœåããããšã¯ãŸããããããŸããã çŸæç¹ã§ã¯ã using ImportMacros
ãæ€çŽ¢ãããšãGithubã§10æªæºã®äžæã®çµæãåŸãããŸãã
ç§ã¯import ... as ...ãã»ãŒæ¯å䜿çšããŸããããããè¡ãããã«æåã«å¥ã®ããã±ãŒãžãã€ã³ããŒãããå¿ èŠã¯ãªãã§ãããã
ããã«ãããäž¡æ¹ã®æ¹æ³ãåæžãããŸãã ImportMacros
ãè¿œå ã®èšå·ïŒ import LongFoo; const Foo = LongFoo
ïŒãªã©ã®ligthweightããã±ãŒãžã䜿çšããïŒéåžžã«å°ããªïŒã³ã¹ããã¡ãªããã«å€ããªãå Žåãã¡ãªããã¯ããã»ã©å€§ãããªãå¯èœæ§ããããŸãã ã
ãžã¥ãªã¢ã¯ãä»ã®èšèªããè·é¢ã眮ããããç¬èªã®ã¢ã€ãã³ãã£ãã£ã匷調ãããããåã«ãæé«ã®æ§æã䜿çšããããã«åªããå¿ èŠããããŸãã
ããããã®è°è«ã®åæ©ã§ãããšããªããèããçç±ã¯ããããŸããã
const
ã®å²ãåœãŠãããŸãæ©èœããªãå Žåã¯ã as
ã䜿çšãããå ŽåããããŸãã
julia> using Distributed
julia> import Future; const future = Future
Future
julia> Future === Distributed.Future # oops, this is what we wanted
false
julia> Future === future # not what we wanted `Future` to mean
true
ã¯ãããããåé¿ããããšã¯ã§ããŸãããåä»ã§ãã ããã¯ãã°ãã°äŸ¿å©ã§ãæã«ã¯å¿
èŠã§ããã import FooBar as FB
ã¯äžè¬çã«åæããããæãæå€ãªãæ§æã§ããããšãèãããšãããã¯ç§ãã¡ãããã¹ãããšã®ããã«æããŸãã ãã®å¿
èŠãªã®ã¯ã誰ãããããå®è£
ããPRãäœæããããšã ãã§ãã
æ°ããJuliaãŠãŒã¶ãŒã¯ãã¡ãã
ç§ã¯äž»ã«Rã®ããã¯ã°ã©ãŠã³ããæã¡ãPythonã䜿çšããŠããŸãã using
ã®ãããªèªã¿èŸŒã¿ã¡ã«ããºã ãããããããã±ãŒãžã®å
±éåå空éã«ã€ããŠã¯æªãçµéšããããŸãã è¡çªã®ãªã¹ã¯ã¯1ã€ã§ãããèªã¿ãããã®èŠ³ç¹ãããããšãåã¡ãœããã®ã¢ãžã¥ãŒã«ã«ã€ããŠåžžã«èãããšãã粟ç¥çãªè² æ
ã«ãªããŸãã
ãã®æ§æã®è¿œå ãã©ãã»ã©è€éãããããŸãããïŒ ããã¯åå¿è ã®ããã«å®è¡å¯èœã§ããïŒ
ããããããã»ã©ç°¡åã§ã¯ãããŸããã ããã«ã¯ãSchemeã§èšè¿°ãããããŒãµãŒã³ãŒãããããã³ã°ããå€æŽãASTãä»ããŠé ç·ããäžéšã®Cã³ãŒãã«ã圱é¿ãäžããå¯èœæ§ããããŸãã
ããã¯ãè€æ°ã®ã¢ãžã¥ãŒã«ã§ã®é¢æ°åã®ç«¶åãåé¿ããããã®åªããæ©èœã§ãã
ããã¿ã«ã€ããŠã®è°è«ãããç§ã¯ããã€ãã®èããè¿œå ããŸã
ããã«ãããé¢æ°åã®éžæãæ£ããé¢æ°ãžã®ã¡ãœããã®é©åãªè¿œå ã«æ³šæãæããªããªãã®ã§ã¯ãªãããšæããŸãã ããšãã°ã
numpy.sin
sympy.sin
ç°ãªãé¢æ°ã¯ãæ°å€å ¥åãšèšå·å ¥åã®äž¡æ¹ã§æ©èœããããå Žåã«ãé¢æ°ã®2ã€ã®ããŒãžã§ã³ãå®è£ ããå¿ èŠããã確å®ãªæ¹æ³ã§ãã å©äŸ¿æ§ã®ããã«ãã®ãããªåå空éããžã¥ãªã¢ã§ãæ®åããå Žåãå€ãã®ã³ãŒãã®åå©çšãéãå¯èœæ§ããããŸããïŒ ã€ãŸããLyndonãhttps://www.oxinabox.net/2020/02/09/whycompositionaljulia.htmlã«æ²èŒããããã«ãããã«ãã£ãŠã人ã ãäžç·ã«åãããšã奚å±ãããããšãå°ãªããªãã®ã§ã¯ãªãããšå¿é ããŠããŸãã
@baggepinnenããã¯ãã®ç¹ã§äœãå€ãããªããšæããŸãã
Juliaã§ã¯ãç°ãªãã¢ãžã¥ãŒã«ã«å®è£ ãããã¡ãœããã¯ãäž¡æ¹ã®ã¡ãœãããåãåå空éã«ã€ã³ããŒãããããšã«ãã£ãŠããŒãžãããŸããã
julia> module Foo
export sin
sin(s::String) = uppercase(s)
end
Main.Foo
julia> sin(1)
0.8414709848078965
julia> using .Foo
WARNING: using Foo.sin in module Main conflicts with an existing identifier.
julia> sin("wat")
ERROR: MethodError: no method matching sin(::String)
Closest candidates are:
sin(::BigFloat) at mpfr.jl:727
sin(::Missing) at math.jl:1197
sin(::Complex{Float16}) at math.jl:1145
...
Stacktrace:
[1] top-level scope at REPL[4]:1
[2] run_repl(::REPL.AbstractREPL, ::Any) at /build/julia/src/julia-1.5.1/usr/share/julia/stdlib/v1.5/REPL/src/REPL.jl:288
julia> Foo.sin("wat")
"WAT"
ãããæ©èœãããã«ã¯ãå ã®é¢æ°ã«ãã£ã¹ããããæ瀺çã«è¿œå ããå¿ èŠããããŸãã
julia> Base.sin(s::String) = Foo.sin(s)
julia> sin("wat")
"WAT"
ç§ã®ç¥ãéããã¢ãžã¥ãŒã«ã®ãšã€ãªã¢ã·ã³ã°ã«ãã£ãŠé¢æ°ã®ãã£ã¹ãããæ¹æ³ãå€æŽããæ¹æ³ã¯ãããŸããã
ãããŠæ£çŽãªãšãããåãååã®ããã€ãã®é¢æ°ã¯å¥ã
ã®åå空éã«ååšããå¿
èŠããããŸãã æ°å€ã©ã€ãã©ãªã®find_delta
é¢æ°ã¯ããã¡ã€ã«å·®åã©ã€ãã©ãªã®find_delta
ãšã¯é¢ä¿ã®ãªãããšãå®è¡ããŸãã ã³ãŒããéåžžã«å€åœ¢ã«ãªããå£ããå
¥åã§å®è¡ããæ¹æ³ãèŠã€ãããšãJavaScriptã®é åã«å
¥ãã誰ããããæãã§ããŸããã
@ninjaaronäžèšã®æžå¿µäºé
ã®ãã¥ã¢ã³ã¹ãäŒããããšãã§ããªãã£ãå¯èœæ§ããããŸãã ç§ã¯ããã®å€æŽã«ãã£ãŠãã©ã€ãã©ãªãå®è£
ãããšãã«äººã
ãéžæããæŠç¥ä»¥å€ã®ãã®ãå€ããããšã«ã¯é¢å¿ããããŸããã
Foo
å®è£
ããŠãã人ã次ã®ãããªèŠåã«ééããŸãã
julia> using .Foo
WARNING: using Foo.sin in module Main conflicts with an existing identifier.
åã«import .Foo.sin as sin2
ãéžæãããã圌ãæ¬åœã«Base.sin
ã®æ°ãããã£ã¹ããããæäŸããããã©ãããèããããšãã§ããŸãã ç§ã®èšãããããšã¯ãããããåçŽã«ç°ãªãé¢æ°ãšèŠãªãããšãéåžžã«ç°¡åã«ãªããšãå®éã«ã¯åãé¢æ°ã®ç°ãªãã¡ãœããã§ããå¿
èŠãããå Žåã§ãããããåºãããå¯èœæ§ããããšããããšã§ãã åãååã®ç°ãªãæ©èœãæ±ãã®ãå°ãåä»ãªçŸåšã®ç¶æ³ã«ã¯ã人ã
ãäºãã«è©±ãåãããããæ¬åœã«åãæ©èœã§ãããã©ãããå€æããããã«æåãå°œãããšããçŽ æŽãããå¯äœçšããããŸãã ç§ã¯ãåãååã§ç°ãªãæ©èœãæã€å¯èœæ§ã«ç°è°ãå±ããŠããããã§ã¯ãããŸããããã¡ãããããã¯éåžžã«äŸ¿å©ã§ãã ç§ã®æžå¿µãéèŠã§ãããã©ããããããããŸãããããããèæ
®ãããŠããããšã確èªããããã«ãããæã¡äžãã䟡å€ããããšèããŸããã
@baggepinnenããã¯çã«ããªã£ãŠããŸãããããŠãããæã¡åºãããšã«å®³ã¯ãããŸããã ã¢ãžã¥ãŒã«ã®ãšã€ãªã¢ã·ã³ã°ã¯ã©ã€ãã©ãªãŠãŒã¶ãŒã«ã®ã¿åœ±é¿ããããããããã©ã€ãã©ãªãäœæãã人ã ã«å€§ããªéãããããããšã¯æããŸããã ã¢ãžã¥ãŒã«ã®ãšã€ãªã¢ã·ã³ã°ãç°¡åã«ãªããšãååã®ç«¶åã«ã€ããŠ_äžå¹³ãèšã_ãŠãŒã¶ãŒãå°ãªããªãå¯èœæ§ããããšæããŸããããããAPIã«å€å€§ãªåœ±é¿ãäžãããšãããé©ããŸãã
ã©ã€ãã©ãªãäœæãããšããç§ã¯éåžžãBaseã®é¢æ°ã«ãã£ã¹ããããè¿œå ããã®ãããããšãåå¥ã«ä¿æããã®ããããªãæèããŠããŸãã ä»ã®ã»ãšãã©ã®å³æžé€šã®èè ãããã ãšæããŸãã
@ninjaaronçŸåšã®ã³ã³ãã³ã·ã§ã³ããã£ã¹ãããã«ç¹å®ã®å®è£ ã䜿çšããŠããå Žå
numpy.sin
sympy.sin
ãŠãŒã¶ãŒ/éçºè
åãã®è¿œå ãªãã·ã§ã³ãšããŠimport numpy.sin as np_sin
ã䜿çšããŠããçŸåšã®ã³ãŒãããŒã¹ã«åœ±é¿ãäžããããšã¯ãããŸããã
å¯äžã®æžå¿µã¯ãå
¬éæ©èœ/ã€ã³ã¿ãŒãã§ãŒã¹ã«ã®ã¿åœ±é¿ãäžããããšã§ãã
æãåèã«ãªãã³ã¡ã³ã
ãã®åé¡ã¯é·ãéååšããŠããŸããããããã€ãã®æ¡åŒµæ©èœã«ã€ããŠã¯ãŸã è°è«ããå¿ èŠããããŸããã
ããèªäœã¯ããªãåççãªããã§ãã