상수 항 스트림

상수 항 스트림

상수 항(Constant term)을 소스/싱크로 취급하게 해주는 스트림 술어들을 설명해요.

출처: GNU Prolog Manual - Constant term streams

본문

소개

상수 항 스트림을 사용하면 상수 항(원자, 문자 리스트 또는 문자 코드 리스트)을 스트림을 연관시켜 소스/싱크로 간주할 수 있어요. 상수 항 스트림에서 읽으면 표준 파일에서 읽은 것처럼 상수 항의 문자들이 전달돼요. 상수 항 스트림에 쓰인 문자들은 스트림이 닫힐 때 최종 상수 항을 형성하도록 저장돼요.

이 절에서 설명하는 내장 술어들은 입력 또는 출력을 위해 상수 항 스트림을 열고 닫을 수 있게 해줘요. 그러나 아주 자주, 상수 항 스트림은 한 번만 읽거나 쓰고 닫도록 만들어져요. 그런 스트림의 생성과 파괴를 피하기 위해 GNU Prolog는 상수 항으로/으로부터 일회성 입출력을 수행하는 여러 내장 술어를 제공해요(8.15절).

open_input_atom_stream/2, open_input_chars_stream/2, open_input_codes_stream/2

Templates

open_input_atom_stream(+atom, -stream)
open_input_chars_stream(+character_list, -stream)
open_input_codes_stream(+character_code_list, -stream)

Description

  • open_input_atom_stream(Atom, Stream) - Stream을 데이터가 Atom의 문자들인 새 입력 텍스트 스트림과 연관된 스트림 항과 통일.
  • open_input_chars_stream(Chars, Stream) - 데이터가 문자 리스트 Chars의 내용인 점만 제외하면 open_input_atom_stream/2와 비슷.
  • open_input_codes_stream(Codes, Stream) - 데이터가 문자 코드 리스트 Codes의 내용인 점만 제외하면 open_input_atom_stream/2와 비슷.

Errors

  • Stream이 변수가 아님 - uninstantiation_error(Stream)
  • Atom이 변수 - instantiation_error
  • Chars가 부분 리스트이거나 변수인 요소 E를 가진 리스트 - instantiation_error
  • Codes가 부분 리스트이거나 변수인 요소 E를 가진 리스트 - instantiation_error
  • Atom이 변수도 원자도 아님 - type_error(atom, Atom)
  • Chars가 부분 리스트도 리스트도 아님 - type_error(list, Chars)
  • Codes가 부분 리스트도 리스트도 아님 - type_error(list, Codes)
  • Chars 리스트의 어떤 요소 E가 변수도 문자도 아님 - type_error(character, E)
  • Codes 리스트의 어떤 요소 E가 변수도 정수도 아님 - type_error(integer, E)
  • Codes 리스트의 어떤 요소 E가 정수이지만 문자 코드가 아님 - representation_error(character_code)

Portability: GNU Prolog 술어.

close_input_atom_stream/1, close_input_chars_stream/1, close_input_codes_stream/1

Templates

close_input_atom_stream(+stream_or_alias)
close_input_chars_stream(+stream_or_alias)
close_input_codes_stream(+stream_or_alias)

Description

  • close_input_atom_stream(SorA) - 스트림 항 또는 별칭 SorA와 연관된 상수 항 스트림을 닫음. SorAopen_input_atom_stream/2(8.11.1절)로 열린 스트림이어야 함.
  • close_input_chars_stream(SorA) - 문자 리스트 스트림에 대해 비슷하게 동작.
  • close_input_codes_stream(SorA) - 문자 코드 리스트 스트림에 대해 비슷하게 동작.

Errors

  • SorA가 변수 - instantiation_error
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 출력 스트림 - permission_error(close, stream, SorA)
  • SorA가 스트림 항 또는 별칭이지만 상수 항 스트림을 가리키지 않음 - domain_error(term_stream_or_alias, SorA)

Portability: GNU Prolog 술어.

open_output_atom_stream/1, open_output_chars_stream/1, open_output_codes_stream/1

Templates

open_output_atom_stream(-stream)
open_output_chars_stream(-stream)
open_output_codes_stream(-stream)

Description

  • open_output_atom_stream(Stream) - Stream을 새 출력 텍스트 스트림과 연관된 스트림 항과 통일. 이 스트림에 쓰인 모든 문자는 수집되며, 스트림이 close_output_atom_stream/2(8.11.5절)로 닫힐 때 원자로 반환.
  • open_output_chars_stream(Stream) - 결과가 문자 리스트가 되는 점만 제외하면 open_output_atom_stream/1와 비슷.
  • open_output_codes_stream(Stream) - 결과가 문자 코드 리스트가 되는 점만 제외하면 open_output_atom_stream/1와 비슷.

Errors

  • Stream이 변수가 아님 - uninstantiation_error(Stream)

Portability: GNU Prolog 술어.

close_output_atom_stream/2, close_output_chars_stream/2, close_output_codes_stream/2

Templates

close_output_atom_stream(+stream_or_alias, ?atom)
close_output_chars_stream(+stream_or_alias, ?character_list)
close_output_codes_stream(+stream_or_alias, ?character_code_list)

Description

  • close_output_atom_stream(SorA, Atom) - 스트림 항 또는 별칭 SorA와 연관된 상수 항 스트림을 닫음. SorAopen_output_atom_stream/1(8.11.4절)로 열린 스트림과 연관되어야 함. Atom은 스트림에 쓰인 모든 문자로 형성된 원자와 통일.
  • close_output_chars_stream(SorA, Chars) - 문자 리스트 스트림에 대해 비슷하게 동작.
  • close_output_codes_stream(SorA, Codes) - 문자 코드 리스트 스트림에 대해 비슷하게 동작.

Errors

  • SorA가 변수 - instantiation_error
  • Atom이 변수도 원자도 아님 - type_error(atom, Atom)
  • Chars가 부분 리스트도 리스트도 아님 - type_error(list, Chars)
  • Codes가 부분 리스트도 리스트도 아님 - type_error(list, Codes)
  • Chars 리스트의 어떤 요소 E가 변수도 문자도 아님 - type_error(character, E)
  • Codes 리스트의 어떤 요소 E가 변수도 정수도 아님 - type_error(integer, E)
  • Codes 리스트의 어떤 요소 E가 정수이지만 문자 코드가 아님 - representation_error(character_code)
  • SorA가 변수도 스트림 항 또는 별칭도 아님 - domain_error(stream_or_alias, SorA)
  • SorA가 열린 스트림과 연관되지 않음 - existence_error(stream, SorA)
  • SorA가 입력 스트림 - permission_error(close, stream, SorA)
  • SorA가 스트림 항 또는 별칭이지만 상수 항 스트림을 가리키지 않음 - domain_error(term_stream_or_alias, SorA)

Portability: GNU Prolog 술어.

더 알아보기