bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] dynamic function not referencing global?


From: Ala'a Mohammad
Subject: Re: [Bug-apl] dynamic function not referencing global?
Date: Wed, 26 Oct 2016 18:15:25 +0400

Hi,

I previously had similar cases, but could not understand them. since
they are worknig for functions, but not lambdas, and assumed that is
the case.
Now, after reading  "This is normal APL and holds for all niladic
functions and not only for niladic lambdas.", I'm more confused. if
I'm not missing anything, the following is created with intent of side
effects or only returning results, rather than supplying argument and
getting results.

      ⍝ Example 1 (providing alternate name for ⎕TS)
      time ← {⎕TS}
      time
2016 10 26 18 1 36 586
      time
2016 10 26 18 1 36 586

∇T←timeit
T←⎕TS
∇
       timeit
2016 10 26 18 8 59 823
      timeit
2016 10 26 18 9 2 471

      ⍝ Example 2 (throw 2 dices 10 times)
      rand ←{?10 2⍴6}
      rand≡rand
1

∇R←rand1
R←?10 2⍴6
∇
      rand1≡rand1
0

What is that I'm missing and do not understand between the quoted text
above and the results above?

Regards,

Ala'a




On Wed, Oct 26, 2016 at 2:54 PM, Juergen Sauermann
<address@hidden> wrote:
> Hi,
>
> correct. To explain why this is so, consider this:
>
>       {1+2}
> 3
>
>       {1+⍵}
> SYNTAX ERROR
>
>       {1+⍵} 5
> 6
>
> Therefore in
>
>       F0←{1+2}
>
> GNU APL first reduces {1+2} to 3 and then assigns 3 to F0, making F0 a
> variable
> because a values is being assigned to a name. This is normal APL and holds
> for
> all niladic functions and not only for niladic lambdas.
>
> In contrast, in
>
>       F1←{1+⍵}
>
> {1+⍵} cannot be reduced (as opposed to {1+⍵} 5 which can), so it is shifted
> onto
> the evaluation stack, then ← is shifted (still not being able to be
> reduced), and finally
>  F1 is shifted. At this point the stack contains the valid phrase F1←{1+⍵},
> which can
> be reduced and causes F1 to become a monadic function bound to the name F1.
>
> /// Jürgen
>
>
>
> On 10/25/2016 07:01 PM, Christian Robert wrote:
>
> DISPLAYhand←{,(⍪hand),' '}
>
> this create a variable DISPLAYhand
>
> this is because de {} does not contain neither alpha nor omega.
>
> Xtian.
>
>
> On 2016-10-25 12:54, address@hidden wrote:
>
> Hi bug-apl,
>
> Why does DISPLAYhand not use the new value of hand on the second call?
>
>
>       deck←''
>       deck←deck,"🂢" "🂲" "🃂" "🃒"
>       deck←deck,"🂣" "🂳" "🃃" "🃓"
>       deck←deck,"🂤" "🂴" "🃄" "🃔"
>       deck←deck,"🂥" "🂵" "🃅" "🃕"
>       deck←deck,"🂦" "🂶" "🃆" "🃖"
>       deck←deck,"🂧" "🂷" "🃇" "🃗"
>       deck←deck,"🂨" "🂸" "🃈" "🃘"
>       deck←deck,"🂩" "🂹" "🃉" "🃙"
>       deck←deck,"🂪" "🂺" "🃊" "🃚"
>       deck←deck,"🂫" "🂻" "🃋" "🃛"
>       ⍝deck←deck,"🂬" "🂼" "🃌" "🃜"   ⍝knights
>       deck←deck,"🂭" "🂽" "🃍" "🃝"
>       deck←deck,"🂮" "🂾" "🃎" "🃞"
>       deck←deck,"🂡" "🂱" "🃁" "🃑"
>       deck ← ⊖13 4 ⍴ deck
>
>       hand←(∈deck)[13?52]
>       DISPLAYhand←{,(⍪hand),' '}
>
>       DISPLAYhand
> 🂢 🃈 🃃 🂷 🃞 🃙 🃝 🂫 🃋 🃕 🃒 🃂 🂧
>       hand←(∈deck)[13?52]
>       DISPLAYhand
> 🂢 🃈 🃃 🂷 🃞 🃙 🃝 🂫 🃋 🃕 🃒 🃂 🂧
>       hand
> 🂤🂺🂾🂷🂪🂱🂳🂸🃚🃅🂻🂲🂭
>
>
> Thanks,
> Alex
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]