Re: [eclipse-clp-users] Issue with exported structures

From: Philippe de Rochambeau <phiroc_at_...22...>
Date: Tue, 5 Sep 2017 20:41:20 +0200
I found a way:

:- compile('persons2').

:- import p2m.

main :-
	top(
		[
			person{name:philippe,age:53,ba:bank_account{bal:1000}}
		],
		PMBL),
		writeln(PMBL).


> Le 5 sept. 2017 à 19:55, Philippe de Rochambeau <phiroc_at_...22...> a écrit :
> 
> 
> Hi,
> 
> let’s say, I have another .pl file with the following contents:
> 
> --------
> 
> :- compile('persons2').
> 
> :- import p2m.
> 
> top(
> 	[
> 		person{name:philippe,age:53,ba:bank_account{bal:1000}}
> 	],
> 	PMBL).
> 
> —————
> 
> How do I make ECLIPSe display PMBL’s value?
> 
> Best regards,
> 
> Philippe
> 
> 
>> Le 5 sept. 2017 à 11:47, Kish Shen <kish.shen_at_...6... <mailto:kish.shen_at_...6...>> a écrit :
>> 
>> Hi Philippe,
>> 
>> The module qualification :/2 is for predicates only. To use the other exported items, you need to import the module:
>> 
>> [eclipse 2]: import p2m.
>> 
>> Yes (0.00s cpu)
>> 
>> you can then use exported items from p2m unqualified:
>> 
>> [eclipse 6]: top([person{name:philippe,age:53,ba:bank_account{bal:1000}}],PMBL).
>> 
>> PMBL = [1000]
>> Yes (0.00s cpu)
>> 
>> Cheers,
>> 
>> Kish
>> 
>> 
>> 
>> 
>> 
>> On Tue, Sep 5, 2017 at 7:21 AM, Philippe de Rochambeau <phiroc_at_...22... <mailto:phiroc_at_...22...>> wrote:
>> Hello,
>> 
>> I’m having an issue with an exported structure:
>> 
>> When I run
>> 
>> 
>> p2m:top(
>> 	[
>> 		p2m:person{name:philippe,age:50,p2m:ba:bank_account{bal:1000}}
>> 	],PMBL).	
>> 
>> 
>> I get the below warnings.
>> 
>> Any help would be much appreciated.
>> 
>> Philippe
>> 
>> 
>> 
>> —————
>> 
>> WARNING: Unrecognized structure name in module eclipse in
>>     bank_account{bal : 1000}
>> WARNING: Unrecognized structure name in module eclipse in
>>     person{name : philippe, age : 53, p2m : ba : bank_account{bal : 1000}}
>> 
>> PMBL = []
>> Yes (0.00s cpu)
>> [eclipse 15]: p2m:top(
>> 	[
>> 		p2m:person{name:philippe,age:53,p2m:ba:bank_account{bal:1000}}
>> 	],PMBL).			
>> WARNING: Unrecognized structure name in module eclipse in
>>     bank_account{bal : 1000}
>> WARNING: Unrecognized structure name in module eclipse in
>>     person{name : philippe, age : 53, p2m : ba : bank_account{bal : 1000}}
>> 
>> PMBL = []
>> Yes (0.00s cpu)
>> 
>> 
>> -------------
>> 
>> ——————————— code ——————————————
>> 
>> 
>> /*
>> 	Find people whose balance is above a certain limit.
>> */
>> 
>> :- module(p2m).
>> :- export top/2.
>> :- export filterBalance/3.
>> :- export top/2.
>> :- lib(ic).
>> :- export struct(bank_account(bal)).
>> :- export struct(person(name,age,ba:bank_account)).
>> 
>> top(FamilyList, PersonsMatchingBalanceLimit) :-
>> 		BalanceLimit = 0,
>> 		filterBalance(BalanceLimit, FamilyList, Ys), PersonsMatchingBalanceLimit = Ys.
>> 		
>> filterBalance(BalanceLimit, Family, Ys) :-
>> 	(
>> 		% foreach person in family
>> 		foreach(Person,Family),
>> 		fromto(Ys,Ys2,Ys1,[]),
>> 		param(BalanceLimit)
>> 	do
>> 		(
>> 			person{ba:Bal} = Person,
>> 			arg(1, Bal, Bal2),
>> 			Bal2 #>= BalanceLimit -> Ys2=[Bal2|Ys1] ;
>> 			Ys2=Ys1
>> 		)	
>> 	).
>> 
>> 
>> 
>> 
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org <http://slashdot.org/>! http://sdm.link/slashdot <http://sdm.link/slashdot>
>> _______________________________________________
>> ECLiPSe-CLP-Users mailing list
>> ECLiPSe-CLP-Users_at_lists.sourceforge.net <mailto:ECLiPSe-CLP-Users_at_...309...sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users <https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users>
>> 
>> 
> 
Received on Tue Sep 05 2017 - 18:41:30 CEST

This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:21 CEST