2016-10-07 2 views
-2

이것은 처음으로 여기에 올린 글이며, 실수를 저의 용서해주세요.LISP : 재귀 함수에서 (인쇄) 또는 (형식 t) 함수를 사용하지 않고 콘솔에 출력하는 방법

내 질문은 위에있는 제목입니다. (print ..) 또는 (Format T)를 사용하지 않고 재귀 함수의 끝에 LISP (CLISP를 사용하고 있습니다)의 콘솔에 데이터를 출력하는 방법이 있습니까? .) 함수? 이것은 우리가 다음 함수들을 사용하는 것을 허용하는 운동입니다 : <,>, < =,> =, =, eq,

새 목록을 만들고 그 목록을 출력 할 수있는 재귀 함수를 만들었지 만 재귀 함수를 인쇄 기능 내에서 래핑하는 경우에만 사용할 수 있습니다. as (print (myRecFunction)). 이것은 운동의 기준에 맞지 않으므로 잘못 판단한 것입니다. 이 함수를 인쇄 함수 주위에 포장하지 않으면 콘솔은 빈 줄에 불과합니다.

인쇄 기능을 둘러 쌀 필요가없는 (재귀 적으로 필요하지 않은) 함수에서 출력되는리스트의 간단한 예제를 제공 할 수 있는지 알아보기 위해 찾고 있습니다. 이 정보가 너무 애매한 경우 사과 드리며 자세한 정보가 필요하면 알려 주시기 바랍니다.

+1

오신 것을 환영합니다. 이미 시도한 코드를 포함하면 도움이됩니다. – FishStix

+1

Read-Eval-Print 루프는 보통 당신이 타이핑 한 값을 출력합니다. 여러분 스스로'(print)'를 사용할 필요는 없습니다. – Barmar

+2

'PRINx' 또는'FORMAT' 함수 중 하나를 사용하지 않고 인쇄 할 방법이 없습니다. 운동은 말이되지 않습니다. 일반적으로 함수는 자체 인쇄를하지 않고 단지 값을 반환하고 호출자는 원하는 경우 인쇄합니다. – Barmar

답변

1

REPL (Read Eval Print Loop)은 최상위 결과를 인쇄하므로 재귀 함수가 인쇄해야하는 값을 반환하는지 확인해야합니다. . 이제 내 모든 LISP 구현이 두 표현식의 결과를 인쇄

> (defun magic-string (times string) 
    (if (= 0 times) 
     string 
     (magic-string (1- times) (concatenate 'string string (reverse string))))) 
magic-string 
> (magic-string 3 "test") 
"testtsettesttsettesttsettesttset" 
> 

: 여기

는 회문을 만드는 기능입니다. 네가하지 않는가?