Of course I'm seeing it's a very powerful feature.
I was just trying to understand why the expression _|1 does not match
4|3|2|1 even if _ matches 4|3|2.
Anyway thank you for helping me!
Regards



2009/2/15 mark richardson <[email protected]>

>  Hi,
>
> Just an after thought.
> Are you aware that _ can be used elsewhere too?
> For example, if you have a procedure that takes 4 arguments, and returns
> values in the last two,
> i.e.
>
> proc {SomeProc A B ?C ?D}
> ....
> end
>
> but for some reason you only want the value that would be returned in D,
> you can call it with
>
> {SomeProc 1 2 _ X}
>
> the value that would have been returned in position C is ignored (we 'don't
> care' what it is) and the value from position D is bound to X.
>
> Hope this helps.
> Regards
> Mark
>
>
> mark richardson wrote:
>
> Hi,
>
> Quirino Zagarese wrote:
>
> Ok, I did some tests and I think I got it.
> The _ seems to exhibit two different behaviours: if you use it in pattern
> matching by itself, its semantic is "anything";
> if you combine it with symbols like | or #, its semantic is "any symbol".
>
> It's behaviour doesn't change at all. _ will always means 'anything' - in
> our course last year we found it easier to think of it as being the 'don't
> care' symbol - we 'don't care' what it is.
>
>
> declare
> fun{MatchAll X}
>    case X of _ then true
>       else false
>    end
> end
>
> So this means 'If X matches 'don't care' return true'.
>
>
> X=nil ---------->true
> X=1|2|nil|1  --->true
>
>
> Combining _ for real world pattern matching (_ by itself doesn't make
> sense)
>
> declare
> fun{MatchIt X}
>    case X of _|1 then true
>       else false
>    end
> end
>
> and this means 'match X to the pattern  'don't care'|1 so anything that can
> be matched to this pattern returns true.
> For example,
> X='this is an atom'|1 --> true
> X="and this is a string"|1 --> true
> X=("this is a really"|'confusing mix')|1 --> true
>
> X=nil|1 ---------->true
> X=(1|2|nil)|1  --->true
> X=1|2|nil|1------>false
>
> Is this the expected behaviour?
> Thank you, I'm understanding a lot of things :-)
> Regards
>
>
>
>  Regards
>
> Mark
>
>
> 2009/2/13 Raphael Collet <[email protected]>
>
>>  On Fri, Feb 13, 2009 at 2:42 PM, Quirino Zagarese <
>> [email protected]> wrote:
>>
>>> Thank you very much Raphael,
>>> I though only procedures could use parameters in that way.
>>>
>>
>> This is true.  But functions in Oz are defined as procedures, that's why
>> it works ;-)
>>
>>  Now it's all clearer.
>>> Then what about matching whatever#true? Is there a way to do that(i.e. a
>>> character like % in SQL)?
>>
>>
>> The identifier '_' matches anything, for instance:
>>
>> case Result of _#true then ... end
>>
>> Cheers,
>> raph
>>
>>
>>
>> _________________________________________________________________________________
>> mozart-users mailing list
>> [email protected]
>> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>>
>
>
>
> --
> Quirino Zagarese
>
> LaszloItalia Founder (www.laszloitalia.org)
> Software Development Manager - Galilaeus s.r.l.
>
> ------------------------------
>
> _________________________________________________________________________________
> mozart-users mailing list                               
> [email protected]http://www.mozart-oz.org/mailman/listinfo/mozart-users
>
>
>
> --
> Mark Richardson
> Final year undergraduate
> University of Teesside
>
>
> ------------------------------
>
> _________________________________________________________________________________
> mozart-users mailing list                               
> [email protected]http://www.mozart-oz.org/mailman/listinfo/mozart-users
>
>
>
> --
> Mark Richardson
> Final year undergraduate
> University of Teesside
>
>
>
> _________________________________________________________________________________
> mozart-users mailing list
> [email protected]
> http://www.mozart-oz.org/mailman/listinfo/mozart-users
>



-- 
Quirino Zagarese

LaszloItalia Founder (www.laszloitalia.org)
Software Development Manager - Galilaeus s.r.l.
_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to