[mercury-users] partial instantiation?

Tomas By tomas at basun.net
Mon Apr 19 18:00:56 AEST 2010


On Mon, April 19, 2010 09:39, Ralph Becket wrote:
> Tomas, Monday, 19 April 2010:
>>
>> Also, the way you have written it, the parameters are not passed to the
>> commands.
>
> One of is mistaken here!

Well, my comment above was about your code, where the N was all alone by
itself.

>  Given,
>
> :- pred cmd(string,list(cmdarg),cmdproc).
> :- mode cmd(out,out,out) is nondet.
>
> cmd( "command", [],              dosomething(0,"filename") ).
> cmd( "command", [str(F)],        dosomething(0,F)          ).
> cmd( "command", [int(N)],        dosomething(N,"filename") ).
> cmd( "command", [str(F),int(N)], dosomething(N,F)          ).
>
> if I have
>
> 	CmdNamd = "command",
> 	F = "foo",
> 	N = 42,
> 	Args = [str(F), int(N)],
> 	cmd(CmdNamd, Args, Command)
>
> then Command will be unified with dosomething(42, "foo").  Isn't
> that what you need?

I thought we had established that the above will not compile, but in the
alternative universe where it works it is still not what I mean, because:

What I get on the command line is ["command","foo","42"], but it could
have been just ["command","42"] where "42" could have been a filename.

This is for experimentation. I want to be able to modify the commands
and parameters easily. Doing a lot of fancy interpretation of the command
line before I get to cmd/X seems misguided.

/Tomas


--------------------------------------------------------------------------
mercury-users mailing list
Post messages to:       mercury-users at csse.unimelb.edu.au
Administrative Queries: owner-mercury-users at csse.unimelb.edu.au
Subscriptions:          mercury-users-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the users mailing list