Thanks for the tutorial. In my case, however, I already knew that. More specifically, my problem is:
x←'hello' 'there' 'how' 'are' 'you' ∇r←test v r←(⊂v)∊x ∇ This works for: test 'there' But doesn't work for: test 'there' 'are' I know I can remove the ⊂ for the second case. I need a single line that works in both cases, or a test for v so I can branch to the correct code. Thanks! Blake On Fri, May 9, 2014 at 9:19 AM, Elias Mårtenson <loke...@gmail.com> wrote: > I was very confused about this when I started learning APL too (well > documented in this very mailing list's archive). > > What happens can be illustrated by boxing the output. Let's look at a > string: > > * 8⎕CR 'foo'* > ┌→──┐ > │foo│ > └───┘ > * ⍴'foo'* > 3 > > In order words,this is a three-element array of characters. The third > element of this array is the character 'o'. > > Here's another example: > > * 8⎕CR 'foo' 'bar' 'testing'* > ┌→────────────────────┐ > │┌→──┐ ┌→──┐ ┌→──────┐│ > ││foo│ │bar│ │testing││ > │└───┘ └───┘ └───────┘│ > └∊────────────────────┘ > * ⍴'foo' 'bar' 'testing'* > 3 > > This is a three-element array of arrays. The subarrays themselves has the > dimensions 3, 3 and 7 respectively. The third element is the string > 'testing'. > > Since the ∊ function matches each individual element, when passed the > string 'foo' it will match each individual one. I.e, the characters 'f', > 'o' and 'o'. > > Finally, let's look at what the enclose function does: > > * 8⎕CR ⊂'foo'* > ┌─────┐ > │┌→──┐│ > ││foo││ > │└───┘│ > └∊────┘ > * 8⎕CR ⍴⊂'foo'* > ┌⊖┐ > │0│ > └─┘ > > What the function does is to encapsulate the argument into a single > scalar. A scalar has no dimensions, as seen by the fact that ⍴ returned ⍬. > > Of course, you could also put the string inside a single-element array. > Such array can be constructed as such: > > * 8⎕CR ,⊂'foo'* > ┌→────┐ > │┌→──┐│ > ││foo││ > │└───┘│ > └∊────┘ > * ⍴,⊂'foo'* > 1 > > The ∊ function will give identical results for that, since it interprets a > scalar and a single-element array the same. > > I'm a beginner myself, so perhaps I made a mistake in my explanation. I'll > leave it to others to fill in any information I have missed. > > Regards, > Elias > > > On 9 May 2014 20:07, Blake McBride <blake1...@gmail.com> wrote: > >> Greetings, >> >> >> On Fri, May 9, 2014 at 12:10 AM, Daniel H. Leidisch >> <li...@leidisch.net>wrote: >> >>> Hello! >>> >>> Blake McBride <blake1...@gmail.com> >>> writes: >>> >>> > x←'abcd' 'efg' 'hijkl' >>> > >>> > Now, if I have: >>> > >>> > y←'hijkl' >>> > >>> > z←'hhh' >>> > >>> > How can I tell if y is in x? How can I tell if z is in x? >>> >>> Or for both at once: >>> >>> (y z)∊x >>> 1 0 >>> >> >> I like this best, except: >> >> u←'abcd' >> g←'ghjk' 'dsaw' >> >> g∊x works. but I have to do: >> >> (⊂u)∊x >> >> but: >> >> u∊x doesn't work. >> >> the left side is being past as an argument to a function. I don't know >> if it is going to be a string array or a general array of strings. I need >> a way to work in either case. (Sorry for the stupid questions. I'm just >> not straight with APL2 yest.) >> >> Thanks. >> >> Blake >> >> >> >> >> >>> >>> >>> Regards, >>> >>> Daniel >>> >>> >>> >> >