[mercury-users] read_term(T) and Mercury types

Goncalo Jorge Coelho e Silva l10454 at alunos.uevora.pt
Sat Apr 12 08:19:51 AEST 2003


Hi,

I'm new to Mercury and it's been a while
I've been trying to get to read something
from the STD_IN (a word/term) and get
it printed.

I've tried a couple of approaches, none of which 
sucessful.

1) Using read_term(T) and write_string 

2) Using io__read_word(Char_List) and io__write_many(Char_List)
   and io__write_list(Char_List,"",InputString) 

 Help would be welcome. 
 The problem seems to be on dealing with the
output term type: 
'term_io:read_term(T)' 
and getting it to be 'casted' to a 'string'. Would
this be possible in Mercury? and/or wise? 
 On theory, the 'T' regarding the input of the
predicatre 'read_term' should accept a string, 
right?

---
Description (1)

I'd get:
 in argument 1 of call to predicate `io:write_string/3':
 inter.m:036:   type error: variable `Result' has type
 `(term_io:read_term(T))',
 inter.m:036:   expected type was `string'.
 
Tried:
 Tried using a sort of 'cast' with 
 "with_type(Term, Type)" or "Term with_type Type"
but it's no good.

 Plus, I didn't get to find out which module  
pred 'with_type' is on.

Code:
-----------------------
:- module inter.

:- interface.

:- import_module io.

:- pred main(io__state, io__state).
:- mode main(di, uo) is det.


:- implementation.

:- import_module array.     
:- import_module string.    
:- import_module list.      
:- import_module term_io.   
%:- import_module type_desc.
%:- import_module std_util.

%:- type ResultS == string.

main -->
        %(1)     
        %:- type ResultS == string.
term_io__read_term(Result).
        %{
        %Result with_type string.
        %}
        %{
        %with_type(Result, string)
        %}.
%io__write_string(Result).
        
        %(2)    
        %io__read_word(Char_List),       
        %io__write_many(Char_List),      
        %io__write_many(Plain_List),     
        % io__write_list(Char_List,"",InputString).
        %{string__format("'-'", Char_List, InputString)},
        %{string__format("%s %i %c %f\n", Char_List, InputString)}.
        %{string__format("%s %i %c %f\n", Char_List, InputString)}.
------------------

 How can I get through this?

 Plus, if I had to declare ":- type ResultS == string."
where's the right place to do it? Between "implementation"
and "main" I get:
  inter.m:020: Error: variable on LHS of type definition.
 
 Before "implementation" and afterwards
"main" makes no sense to me. 

Thanks,
Goncalo
(still reading the documentation... :) )
--------------------------------------------------------------------------
mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the users mailing list