On Wed, Apr 1, 2015 at 11:40 AM, Keean Schupke <[email protected]> wrote:
> On 1 April 2015 at 16:23, Matt Oliveri <[email protected]> wrote:
>> On Wed, Apr 1, 2015 at 10:47 AM, Keean Schupke <[email protected]> wrote:
>> > Have I missed anything?
>>
>> Mainly, you forgot to tell us what "+>" and "*>" mean. XD
>> From the k example, it looks like maybe "+>" is "-n->" and "*>" is
>> another name for "-y->". Why do you need both "=>" and "*>"?
>
> +> means "another argument is required to call this function"
> *> means "this is a call point, you have sufficient arguments to call the
> function"
>
> You are right => and *> can be combined into a single arrow, unless you want
> to omit this rule:
>
> (->) U (*>) = (*>)
>
> If you omit this rule you can prevent functions being called with more
> arguments than they require. But if we are sure we don't ever want to omit
> this rule they can be combined.

It seems pretty silly to have a function accept arguments that we're
not allowed to give it, so I think we should leave it out.

>> Is it true that
>> (+>) U (*>) =
>> (+>) U (=>) =
>> _|_
>> ?
>> I ask because (-y->) U (-n->) = _|_
>
> Yes this is what I have. Any unifications not listed explicitly are _|_
>
> So:
>
> -> = -n->
> => = -y->
> +> = -?r->

You mean:
-> = -?r->
=> = -y->
+> = -n->

> What do 'n', 'y' and '?r' stand for?

'n' means no call (you need one or more additional arguments to call),
'y' means yes call ("-y->" is a call arrow), and ?r is a callvar. A
callvar is an abstract y/n; we don't know if there's a call there.
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to