2013-06-05 14 views
1

저는 프롤로그를 배우고 있습니다. 프롤로그에서 목록에 대문자로 시작하는 요소가 포함될 수있는 요소를 어떻게 작성합니까?프롤로그의 목록에 요소를 작성하십시오.

는 예를 들어 I 술어 my_write/1

my_write ([])를 가지고있다./* Base case: An empty list */

my_write ([X | R]) : - 쓰기 (X), nl, my_write (R)./* Recursive case: */

그러나 실행할 때 my_write ([How, are, you]). 내가 얻을 [_G749,있다, 너]

대문자로 시작하는 단어는 프롤로그의 변수라는 것을 알고 있습니다.

대문자로 시작하는 단어를 따옴표로 묶을 수 있지만 그 일을 할 필요없이 할 수 있다는 것을 알고 있습니다.

답변

2
I, 당신은 밑줄 기호로 시작도하지 만 대문자로 시작하는 용어지만, 용어를 인용 할 필요가 BTW my_write(['How', are, you]).

을 그것을 대신 할 수있는 (더 나은) 방법이라고 생각하지 않습니다

, 이름에 공백이있는 용어.

+0

감사합니다. 나는 대문자로 시작하는 단어를 따옴표로 묶어야한다는 것을 알고있었습니다. 그러면 목록에서 단어를 대문자로 변환하는 방법은 무엇입니까? – Ishan

1

SWI-Prolog는 매우 사용자 친화적 인 구문이 아닌 문자 작업을 처리하기 위해 code_type/2입니다.

당신은 원자의 첫 글자를 대문자을해야하는 경우 :

my_write([First|Rest]) :- 
    upcase_first_char(First, Upper), 
    maplist(writeln, [Upper|Rest]). 

수율처럼

upcase_first_char(Plain, Proper) :- 
    atom_codes(Plain, [First|Cs]), 
    code_type(First, to_lower(Upcase)), 
    atom_codes(Proper, [Upcase|Cs]). 

?- upcase_first_char(carlo, V). 
V = 'Carlo'. 

이 경우에 사용되는 산출

?- my_write([how, are, you]). 
How 
are 
you 
관련 문제