This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html
Set by lizmat on 8 June 2022.
00:09 jgaz joined 00:12 jgaz left 01:29 razetime joined 02:52 frost66 joined 03:14 frost66 left 03:49 deoac joined
deoac my $foo = 1; BEGIN { say $foo; } 03:52
#OUTPUT: (Any)
Why?
kjp Because the "$foo = 1" isn't executed until run time, and the code in the BEGIN block is run at compile time. 03:59
04:00 razetime left 04:39 razetime joined
deoac Yet, `say $food` throws an error, not (Any). So BEGIN knows about $foo. 04:59
And `sub foo {say 'Hello'};  BEGIN { foo; };`  prints `Hello` 05:01
so why isn't the assignment recognized?
05:06 Heptite left 05:14 deoac left 05:37 Kaipei joined 05:41 Kaiepi left
Nemokosch I think the reasoning by kjp was legit 06:41
m: constant $foo = 1; BEGIN { say $foo; } # constant is evaluated at compile time 06:43
Just because something is visually one line, it doesn't necessarily mean it is executed all at once, confer Javascript `var`s... 06:45
m: BEGIN { say $foo; }; my $foo = 1;
by the way, your subroutine example doesn't work for me 06:47
m: sub foo {say 'Hello'}; BEGIN { foo; };
lizmat deoc: only the assignment is runtime, the declaration of $foo is also compile time
Nemokosch I can imagine this depends on the way of compilation; it definitely doesn't work for me with `raku -e`
lizmat that's why the $foo is known inside the BEGIN 06:48
Nemokosch I think it's good to clarify that BEGIN is not something you often need. Ironically, it's not a beginner thing 06:51
m: my \foo = 1; BEGIN { say foo; } 07:03
lizmat m: my \foo = 1; BEGIN { say foo; } 07:06
camelia (Mu)
lizmat the reason that shows Mu is that when you declare a variable, it gets declared with a Scalar container already in it 07:07
Nemokosch I was curious about terms because they are bound at declaration 07:10
08:16 razetime left 08:40 razetime joined 08:42 razetime left, razetime joined 10:14 arthur joined, arthur left 13:32 jgaz joined 14:27 jgaz left 14:54 Heptite joined 15:05 samebchase- left 15:31 kueppo joined 17:19 kueppo left 17:41 Manifest0 left 17:43 Manifest0 joined 18:31 jgaz joined 18:50 razetime left 19:43 jgaz left 19:54 jgaz joined 20:01 Kaipei left 21:11 [Coke]___ is now known as [Coke] 21:17 Kaipei joined 21:52 jgaz left 22:00 [Coke]_ joined 22:03 [Coke] left 22:34 [Coke]_ is now known as [Coke]