naru standard library
이 문서는 강 성훈이 설계한 일반 목적의 객체 지향 프로그래밍 언어인 나루 프로그래밍 언어의 셋째 판을 위한 표준 라이브러리를 서술합니다.
목차
6장: 라이브러리
나루는 기본 자료형과 이들을 보조하는 함수들을 비롯해, 편의를 위한 기능이나 외부 환경과 통신하기 위한 인터페이스 등을 표준 라이브러리로 규정하고 있습니다. 이들 라이브러리는 naru 네임스페이스에 들어 있습니다.
이 장에서는 설명의 편의를 위하여 다음과 같은 형 이름이 이미 있다고 가정합니다. 일부 이름은 import 문을 써야 사용할 수 있습니다.
표 6.1 형 이름 대응표
| 줄인 이름 | 실제 위치 |
| Locale | naru.culture.Locale [TBD] |
6.1 naru 네임스페이스
naru 네임스페이스는 나루 표준 라이브러리를 담고 있습니다. 여기에는 오로지 다른 네임스페이스만이 포함됩니다.
하위 네임스페이스
- namespace core
- 나루 코드에 기본적으로 필요한 자료형과 함수 등을 담습니다.
- namespace lang
- 나루의 기타 언어 구성 요소들을 포함합니다.
- namespace system
- 나루 런타임 시스템에 대한 인터페이스를 구성합니다.
- namespace platform
- 런타임 시스템 바깥의 외부 환경에 대한 인터페이스를 구성합니다.
- namespace text
- 문자열 등을 다루기 위한 라이브러리입니다.
- namespace math
- 수치를 다루기 위한 수학 라이브러리입니다.
- namespace datetime
- 날짜와 시간을 다루기 위한 라이브러리입니다.
- namespace util
- 기타 편의를 위한 유틸리티들이 들어 있습니다.
6.2 naru.core 네임스페이스
naru.core 네임스페이스는 나루 코드에 기본적으로 필요한 자료형들과 함수 등을 포함하고 있습니다. 이 네임스페이스는 모든 나루 코드에 명시적으로 포함됩니다. 이는,
import naru.core.* -- [TBD: 문법이 이게 맞나?]
위의 코드가 모든 프로그램의 맨 첫 머리에 들어 있는 것과 같은 효과입니다.
기본 자료형
- class Object
- 모든 클래스의 기반이 되는 클래스입니다.
- class Number
- 모든 수치형의 기반 클래스입니다.
- class Ordered[T]
- 순서가 있게 배열된 자료들을 담는 객체들의 기반 클래스입니다.
- class Unordered[T]
- 순서 없이 배열된 자료들을 담는 객체들의 기반 클래스입니다.
- class Boolean
- 참과 거짓을 담을 수 있는 논리값 클래스입니다.
- class Integer ← Number
- 임의 자리의 정수를 담을 수 있는 정수 클래스입니다.
- class Rational ← Number
- 두 정수의 비율을 담을 수 있는 유리수 클래스입니다.
- class Decimal ← Number
- 정확한 십진법 실수를 담을 수 있는 클래스입니다.
- class Float ← Number
- 부정확한 이진법 실수를 담을 수 있는 클래스입니다.
- class Complex ← Number
- 부정확한 실수형의 실수부와 허수부를 갖는 복소수 클래스입니다.
- class Char
- 하나의 유니코드 문자를 담는 클래스입니다.
- class String ← Ordered[Char]
- 유니코드 문자들의 집합인 유니코드 문자열 클래스입니다.
- class ByteSeq ← Ordered[Integer]
- 이진 바이트들의 집합인 바이트 배열 클래스입니다.
- class Symbol
- 변수나 함수의 이름 등을 담는 데 쓰이는 가벼운 문자열인 심볼 클래스입니다.
- class Pattern
- 특정한 조건을 만족하는 문자열의 집합을 나타내는 패턴 클래스입니다.
- class BytePattern
- 특정한 조건을 만족하는 바이트 배열의 집합을 나타내는 바이트 패턴 클래스입니다.
- class Tuple[T...]
- 서로 다른 여러 자료형을 담을 수 있는 순서쌍 클래스입니다.
- class List[T = Object] ← Ordered[T]
- 같은 자료형인 값들을 순서에 따라 담을 수 있는 리스트 클래스입니다.
- class Set[T = Object] ← Unordered[T]
- 같은 자료형인 값들을 순서 없이 담을 수 있는 집합 클래스입니다.
- class Map[T = Object, U = Object] ← Unordered[Tuple[T,U]]
- 값에 연관된 키로 안에 들어 있는 내용을 검색할 수 있는 연관 배열 클래스입니다.
- class Range[T = Object]
- 두 개의 끝 값으로 이루어진 범위 클래스입니다.
기본 예외
- class Exception
- 모든 예외들의 기반 클래스입니다.
raise로 발생되는 모든 예외는 이 클래스로부터 상속받아야 합니다.
- @initialize! := fun (message: String, ?trace: Backtrace)
- 예외를 주어진 메시지로 초기화합니다. trace가 주어지면 함수 호출 기록도 함께 저장됩니다.
- message: String
- backtrace: Backtrace or nil
- 예외에 연관된 메시지와 함수 호출 기록을 반환합니다.
- String.from := fun (): String
- 예외의 메시지와 함수 호출 기록을 문자열로 포매팅하여 반환합니다. 이 메소드는 실제로 잡히지 않은 예외를 출력할 때 사용합니다.
- class Error ← Exception
- 프로그램의 실행을 중단시키는 오류에 대한 예외 기반 클래스입니다.
- class ArithmeticError ← Error
- 산술 연산에서 오류가 발생했을 때 발생하는 예외입니다.
- class ValueError ← Error
- 프로그램의 실행에 적절하지 않은 값이 들어 왔을 때 발생하는 오류입니다.
기본 함수
- fun int(value: Object, base?: Integer): Integer
Integer.from(value, base)와 동일합니다.
6.2a Object 클래스
6.2b Number 클래스
6.2c Ordered 클래스
6.2d Unordered 클래스
6.2e Boolean 클래스
Boolean 클래스는 참 또는 거짓 값을 나타냅니다. 이 클래스는 상수 리터럴 true와 false를 통해 생성됩니다.
생성자
- from := fun (value: Boolean): Boolean
- 논리값 객체를 그대로 반환합니다.
논리 연산
- ~# := fun (): Boolean
- 참이면 거짓을, 거짓이면 참을 반환합니다.
- #&# := fun (lhs: Boolean, rhs: Boolean): Boolean
- #|# := fun (lhs: Boolean, rhs: Boolean): Boolean
- #^# := fun (lhs: Boolean, rhs: Boolean): Boolean
- 각각 논리곱, 논리합, 배타적 논리합 연산을 행합니다.
변환
- String.from := fun (): String
- 논리값이 참이면
"true"를, 거짓이면 "false"를 반환합니다.
6.2f Integer 클래스
Integer 클래스는 임의 자리의 정수를 나타냅니다. 이 클래스는 정수 리터럴로 생성됩니다.
생성자
- @initialize! := fun ()
- 정수를 0으로 초기화합니다.
- @initialize! := fun (value: Integer)
- 다른 숫자로부터 값을 초기화합니다.
- from := fun (value: Integer): Integer
- 정수 객체를 그대로 반환합니다.
- from := fun (str: String, ?base: Integer): Integer
- [TBW]
산술 연산
- sign?: Integer
- 양수이면 +1을, 음수이면 -1을, 0이면 0을 반환합니다.
self <=> 0과 같습니다.
- +# := fun (): Integer
- -# := fun (): Integer
- 자기 자신의 부호를 유지/반전시킨 값을 반환합니다.
- #+# := fun (lhs: Integer, rhs: Integer): Integer
- #-# := fun (lhs: Integer, rhs: Integer): Integer
- #*# := fun (lhs: Integer, rhs: Integer): Integer
- #/# := fun (lhs: Integer, rhs: Integer): Rational
- 사칙 연산을 구현합니다.
- #/%# := fun (lhs: Integer, rhs: Integer): (Integer, Integer)
- 나눗셈의 몫과 나머지를 순서쌍으로 반환합니다. 이 연산자의 정의는 4.1.6e 몫 및 나머지 연산자를 참고하십시오.
- #//# := fun (lhs: Integer, rhs: Integer): Integer
- #%# := fun (lhs: Integer, rhs: Integer): Integer
- 나눗셈의 몫과 나머지를 각각 반환합니다. 이 연산자는 #/%#를 사용해서 구현됩니다.
- #**# := fun (lhs: Integer, rhs: Integer): Integer or Rational
- lhs의 rhs제곱을 계산합니다. 만약 지수가 음수라면 정수 대신 유리수 값을 반환하며,
0**0은 ArithmeticError 예외를 발생시켜야 합니다.
- #**# := fun (lhs: Integer, rhs: Integer, modulo: Integer): Integer
- lhs의 rhs제곱을 modulo로 나눈 나머지를 계산합니다. 이 연산은
(lhs ** rhs) % modulo보다 더 빠르게 연산되어야 합니다. rhs는 음수가 될 수 없습니다.
비트 연산
- ~# := fun (): Integer
- 정수의 각 비트를 반전시킨 값을 반환합니다. 나루에서
~x는 -x-1과 동일합니다.
- #&# := fun (lhs: Integer, rhs: Integer): Integer
- #|# := fun (lhs: Integer, rhs: Integer): Integer
- #^# := fun (lhs: Integer, rhs: Integer): Integer
- 정수의 각 비트들을 서로 논리곱, 논리합, 배타적 논리합 연산을 하여 그 값을 반환합니다.
- #<<# := fun (lhs: Integer, rhs: Integer): Integer
- #>># := fun (lhs: Integer, rhs: Integer): Integer
- 정수의 각 비트를 rhs비트만큼 왼쪽 및 오른쪽으로 이동시킵니다. 오른쪽으로 이동할 때 최하위 비트 바깥으로 나간 비트는 절삭됩니다. rhs는 음수가 될 수 없습니다.
- #<<# := fun (lhs: Integer, rhs: Integer, rotate: Integer): Integer
- #>># := fun (lhs: Integer, rhs: Integer, rotate: Integer): Integer
- 정수의 각 비트를 rhs비트만큼 왼쪽 및 오른쪽으로 이동시키고, 만약 최하위 rotate개의 비트 바깥으로 벗어나는 비트가 있으면 반대편에 채웁니다. lhs가 최하위 rotate개의 비트 외에도 다른 (부호 비트가 아닌) 비트를 가지고 있으면 결과는 정해져 있지 않습니다. 마찬가지로 rhs는 음수가 될 수 없습니다.
- #[#] := fun (index: Integer): Integer
- 지정된 번째의 비트를 반환합니다. 이는
(self >> index) & 1과 동일합니다. index는 맨 오른쪽 비트부터 0, 1, 2, …로 시작하며, 음수가 될 수 없습니다.
- #[#] := fun (range: Range[Integer ← *]): Integer
- 지정된 범위의 비트들을 반환합니다.
- numbits? := fun (): Integer
- 양수의 경우 1 비트의 갯수를 반환합니다. 음수의 경우 0 비트의 갯수에 음의 부호를 붙인 값을 반환합니다. 0에 대해서는 0을 반환합니다.
- highestbit := fun (): Integer
- lowestbit := fun (): Integer
- 가장 왼쪽/오른쪽에 있는 1 비트(양수) 또는 0 비트(음수)만을 설정한 숫자를 반환합니다. 0에 대해서는 0을 반환합니다.
비교
- #<=># := fun (lhs: Integer, rhs: Integer): Integer
- 두 피연산자를 비교하여 첫째가 작으면 -1, 둘째가 작으면 +1, 같으면 0을 반환합니다. 이 함수는
nil를 반환하지 않습니다.
- #!<# := fun (lhs: Integer, rhs: Integer): Boolean
- #!<=# := fun (lhs: Integer, rhs: Integer): Boolean
- #!<># := fun (lhs: Integer, rhs: Integer): Boolean
- #!<>=# := fun (lhs: Integer, rhs: Integer): Boolean
- #!=# := fun (lhs: Integer, rhs: Integer): Boolean
- #!># := fun (lhs: Integer, rhs: Integer): Boolean
- #!>=# := fun (lhs: Integer, rhs: Integer): Boolean
- #<# := fun (lhs: Integer, rhs: Integer): Boolean
- #<=# := fun (lhs: Integer, rhs: Integer): Boolean
- #<># := fun (lhs: Integer, rhs: Integer): Boolean
- #<>=# := fun (lhs: Integer, rhs: Integer): Boolean
- #==# := fun (lhs: Integer, rhs: Integer): Boolean
- #># := fun (lhs: Integer, rhs: Integer): Boolean
- #>=# := fun (lhs: Integer, rhs: Integer): Boolean
- 두 피연산자를 비교하여 참 또는 거짓을 반환합니다. 이 연산자들의 정의는 4.1.15 산술 비교 연산자를 참고하십시오.
변환
- String.from := fun (?base: Integer): String
- 숫자를 문자열로 변환합니다. 변환에는 U+0030(
0)부터 U+0039(9)까지의 문자가 쓰이며, 음수 기호는 U+002D(-)를 사용합니다. 만약 base가 주어진다면, 그 값은 2부터 36 사이여야 하며 진법을 결정하게 됩니다. 이 경우 10 이상의 자리는 U+0061(a)부터 U+007A(z)까지의 문자로 표기합니다.
6.2g Rational 클래스
6.2h Decimal 클래스
6.2i Float 클래스
6.2j Complex 클래스
6.2k Char 클래스
Char 클래스는 하나의 유니코드 문자를 나타냅니다. 이 클래스는 문자 리터럴로 생성됩니다.
생성자
- @initialize! := fun (ordinal: Integer)
- 문자를 주어진 유니코드 코드 포인트로 초기화합니다. ordinal은 올바른 유니코드 코드 포인트로, 0보다 크거나 같고 1114111보다 작아야 합니다.
- @initialize! := fun (ch: Char)
- 문자 객체를 복사합니다.
- @initialize! := fun (name: String)
- 주어진 문자 이름에 해당하는 문자를 초기화합니다.
- from := fun (ch: Char): Char
- 문자 객체를 그대로 반환합니다.
- from := fun (ordinal: Integer): Char
- 주어진 유니코드 코드 포인트에 해당하는 문자를 반환합니다.
문자 정보
- ord: Integer
- 문자의 코드 포인트를 반환합니다.
- name: String or nil
- 문자의 이름을 유니코드 문자 데이터베이스에서 검색하여 반환합니다. 이름이 존재하지 않는 일부 문자의 경우
nil을 반환합니다. (예를 들어 U+0000부터 U+001F까지의 C0 영역이나, 문자가 할당되지 않은 경우)
- allnames: Unordered[String]
- 문자에 할당된 모든 이름을 반환합니다. name이
nil이 아니라면 이 목록에 포함되어야 합니다.
- category: Symbol
- 유니코드 문자 분류를 반환합니다. 여기에는 다음과 같은 값이 포함됩니다.
- 비기호 문자:
:Lu(대문자), :Ll(소문자), :Lt(제목문자; 대문자 하나와 소문자 하나 이상으로 이루어진 복합 문자), :Lm(꾸밈 문자), :Lo(대소문자 구분이 없는 기타 문자)
- [TBW: 쓰기 귀찮...]
- bidirectional: Symbol
- 유니코드 방향성(bidirectional) 분류를 반환합니다. 여기에는 다음과 같은 값이 포함됩니다. [TBW]
- combining: Integer
- 문자의 결합 형태를 나타내는 숫자를 반환합니다. 다른 문자에 결합하지 않는 문자는 0을 반환합니다.
- decimal: Integer or nil
- 해당 문자가 십진법 숫자의 한 자리로 나타날 수 있다면 해당 숫자를 반환합니다. 그렇지 않다면
nil을 반환합니다. 여기에 속하는 대표적인 문자로는 U+0030부터 U+0039까지(각각 0부터 9)가 있습니다.
- digit: Integer or nil
- 해당 문자가 숫자 한 자리를 나타낸다면 해당 숫자를 반환합니다. 그렇지 않다면
nil을 반환합니다. 여기에 속하지만 decimal은 정해지지 않은 대표적인 문자로는 윗첨자/아랫첨자 숫자나 원문자가 있습니다.
- numeric: Integer or Rational or nil
- 해당 문자가 숫자를 나타낸다면 해당 숫자를 반환합니다. 그렇지 않다면
nil을 반환합니다. 여기에는 로마 숫자나 분수 문자와 같은 것도 포함되며, 다른 속성과는 달리 분수나 음수가 들어 올 수 있습니다.
문자 분류
- upper?: Boolean
- lower?: Boolean
- title?: Boolean
- digit?: Boolean
- 해당 문자의 유니코드 문자 분류가 각각 Lu, Ll, Lt, Nd이면 참을 반환합니다. 이는 각각 대문자, 소문자, 제목문자, 숫자에 해당합니다.
- space?: Boolean
- 해당 문자의 유니코드 문자 분류가 Zs, Zl, Zp일 때 참을 반환합니다. 이는 공백 문자에 해당합니다.
- alpha?: Boolean
- 해당 문자의 유니코드 문자 분류가 Lu, Ll, Lt, Lm, Lo일 때 참을 반환합니다. 이는 모든 종류의 비기호 문자(대소문자 구분이 없는 문자도 포함)에 해당합니다.
- alphanumeric?: Boolean
- 해당 문자의 유니코드 문자 분류가 Lu, Ll, Lt, Lm, Lo, Nd, Nl, No일 때 참을 반환합니다. 이는 모든 종류의 비기호 문자와 인도-아라비아 숫자가 아닌 것까지 포함한 모든 숫자 문자에 해당합니다.
다른 문자로 변환
- upper: Char
- lower: Char
- 해당 문자를 대문자 또는 소문자로 변환합니다. 만약 유니코드 문자 분류가 각각 Lu나 Ll이 아니면 자기 자신을 반환합니다.
- title: Char
- 해당 문자를 제목문자로 변환합니다. 만약 대응되는 제목문자가 없으면, upper와 똑같은 값을 반환합니다.
6.2l String 클래스
String 클래스는 [TBW]
생성자
- @initialize! := fun ()
- 빈 문자열을 초기화합니다.
- @initialize! := fun (ch: Char)
- @initialize! := fun (str: String)
- 주어진 문자 또는 문자열로부터 문자열을 초기화합니다.
- from := fun (ch: Char): String
- from := fun (str: String): String
- @initialize!와 같지만 새 문자열 객체를 반환하는 점이 다릅니다. 이 메소드는 다른 클래스에서 문자열 변환을 위해 다양한 인자로 중복되어 선언됩니다.
문자 접근
- length: Integer
- 문자열의 길이를 나타냅니다.
- #[#] := fun (*: nil): String
- 전체 문자열을 복사해서 돌려 줍니다.
- #[#] := fun (index: Integer): Char
- 문자열의 index번 문자를 반환합니다. index는 0부터 시작해서 문자열의 길이보다 1 작은 숫자로 끝나며, index가 음수이면 문자열의 길이를 더해서 실제 번호를 구합니다.
- #[#] := fun (range: Range[Integer ← *]): String
- 범위로 지정된 문자열의 지정된 일부분을 자릅니다. 범위의 시작점이 주어지지 않으면 0으로, 끝점이 주어지지 않으면 무한대로 가정하며, 음수일 경우 문자 참조와 같은 방법으로 정규화를 시도합니다. 만약 주어진 범위가 문자열의 끝을 벗어나면, 끝점이 문자열의 끝까지로 재조정됩니다.
- #[#]=# := fun (*: nil, str: String)
- #[#]=# := fun (index: Integer, ch: Char)
- #[#]=# := fun (range: Range[Integer ← *]: str: String)
- 각각 문자열 전체, 지정된 문자, 지정된 부문자열을 주어진 값으로 교체합니다. 문자열을 교체할 경우 교체할 문자열과 원래 문자열의 길이가 맞지 않아도 됩니다.
조작
변환
- encode := fun (?encoding: Symbol, ?callback: Symbol): ByteSeq
- 문자열을 지정된 인코딩을 사용하여 바이트 배열로 변환합니다. callback이 주어지면 해당 콜백을 인코딩 에러 발생시 호출하여 대체 문자열을 얻어 냅니다.
6.2m ByteSeq 클래스
6.2n Symbol 클래스
6.2o Pattern 클래스
6.2p BytePattern 클래스
6.2q Tuple 클래스
6.2r List 클래스
6.2s Set 클래스
6.2t Map 클래스
6.2u Range 클래스
6.3 naru.lang 네임스페이스
naru.lang 네임스페이스는 naru.core 네임스페이스와 함께 언어의 기타 구성 요소들을 포함하고 있습니다.
언어 정보
- revision: Number
- 구현된 나루 언어의 버전을 나타내는 숫자입니다. 이 숫자는 언어가 발전할 때마다 더 큰 숫자로 바뀌는 것이 보장됩니다. 이 문서에서 서술하는 나루 언어의 버전은 3.1입니다.
하위 네임스페이스
- namespace types
naru.core 네임스페이스에 들어 있지 않은 기타 자료형들을 담는 네임스페이스입니다.
6.3.1 naru.lang.types 네임스페이스
6.4 naru.system 네임스페이스
[TBD: 런타임 시스템 등등에 대한 정보들. (gc라거나...) 이전 r2의 naru.implementation은 여기로 옮겨감]
6.6 naru.text 네임스페이스
naru.text 네임스페이스는 문자열을 다루기 위한 라이브러리를 제공합니다.
6.6.1 naru.text.pattern 네임스페이스
6.7 naru.math 네임스페이스
naru.math 네임스페이스는 수치를 다루기 위한 수학 라이브러리를 제공합니다.
대부분의 함수들에는 두 종류의 실수형을 모두 쓸 수 있도록 중복 선언이 되어 있습니다. 반환값은 입력된 형식을 그대로 따릅니다. 또한 정확한 실수형의 경우, prec 인자를 써서 정확도를 지정할 수 있습니다. 항상 정확한 결과를 내 놓을 수 있는 함수는 이 인자를 가지지 않습니다.
수학 상수
수학 상수는 두 가지 형태로 제공됩니다. 한 가지 값은 부정확한 실수로 나타낸 근사값이고, 또 한 가지는 정확한 실수로 주어진 유효자리수만큼 계산하여 값을 반환하는 함수입니다. 후자는 이름에 물음표를 붙여 구별합니다.
- PI := Float
- 원주율, 즉 원 지름에 대한 둘레의 비율입니다. 이 값은
3.14159 26535 89793 23846 26433 83279 50288 …로 시작하는 무리수입니다.
- E := Float
- 자연 로그의 밑이 되는 값입니다. 이 값은
2.71828 18284 59045 23536 02874 71352 66249 …로 시작하는 무리수입니다.
- PI? := fun (?prec: Integer): Decimal
- E? := fun (?prec: Integer): Decimal
- 주어진 유효자리수만큼 해당 상수를 계산하여 반환합니다.
수론적 함수
- floor := fun (x: Decimal): Decimal
- floor := fun (x: Float): Float
- x보다 작거나 같은 가장 큰 정수를 반환합니다.
- ceil := fun (x: Decimal): Decimal
- ceil := fun (x: Float): Float
- x보다 크거나 같은 가장 작은 정수를 반환합니다.
지수 함수
- sqrt := fun (x: Decimal, ?prec: Integer): Decimal
- sqrt := fun (x: Float): Float
- x의 제곱근을 구합니다. x는 음수가 될 수 없습니다.
- exp := fun (x: Decimal, ?prec: Integer): Decimal
- exp := fun (x: Float): Float
- ex를 구합니다.
- log := fun (x: Decimal, ?base: Decimal, ?prec: Integer): Decimal
- log := fun (x: Float, ?base: Float): Float
- x의 자연 로그 값을 구합니다. base가 주어지면 밑을 그 값으로 하는 로그를 구합니다.
- log10 := fun (x: Decimal, ?prec: Integer): Decimal
- log10 := fun (x: Float): Float
- x의 상용 로그 값을 구합니다. 상용 로그는 밑이 10인 로그입니다.
삼각 함수
각도를 받는 모든 삼각함수는 호도법(라디안)을 쓸 지 보통 각도를 쓸 지를 지정하기 위하여 두번째 인자로 :radians 또는 :degrees 값을 지정할 수 있습니다. 기본값은 호도법입니다.
- sin := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- sin := fun (x: Float, unit: Symbol =
:radians): Float
- x의 사인 값을 구합니다.
- cos := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- cos := fun (x: Float, unit: Symbol =
:radians): Float
- x의 코사인 값을 구합니다.
- tan := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- tan := fun (x: Float, unit: Symbol =
:radians): Float
- x의 탄젠트 값을 구합니다.
- arcsin := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- arcsin := fun (x: Float, unit: Symbol =
:radians): Float
- x의 아크사인 값을 구합니다. x는 [-π/2, π/2] 범위에 포함되어야 합니다. 아크사인 함수는 사인의 역함수입니다.
- arccos := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- arccos := fun (x: Float, unit: Symbol =
:radians): Float
- x의 아크코사인 값을 구합니다. x는 [0, π] 범위에 포함되어야 합니다. 아크코사인 함수는 코사인의 역함수입니다.
- arctan := fun (x: Decimal, unit: Symbol =
:radians, ?prec: Integer): Decimal
- arctan := fun (x: Float, unit: Symbol =
:radians): Float
- x의 아크탄젠트 값을 구합니다. x는 (-π/2, π/2) 범위에 포함되어야 합니다. 아크탄젠트 함수는 탄젠트의 역함수입니다.
- arctan2 := fun (y: Decimal, x: Decimal, ?prec: Integer): Decimal
- arctan2 := fun (y: Float, x: Float): Float
- y/x의 아크탄젠트 값을 구합니다. [TBD]
- hypot := fun (x: Decimal, y: Decimal, ?prec: Integer): Decimal
- hypot := fun (x: Float, y: Float): Float
- (x2 + y2)1/2를 구합니다. 이 값은 원점과 (x, y)를 두 끝점으로 하는 벡터의 길이입니다.
코시컨트, 시컨트, 코탄젠트 함수는 각각 사인, 코사인, 탄젠트 함수의 역수를 취하여 구할 수 있습니다.
쌍곡 삼각함수
- sinh := fun (x: Decimal, ?prec: Integer): Decimal
- sinh := fun (x: Float): Float
- x의 쌍곡 사인 값을 구합니다.
- cosh := fun (x: Decimal, ?prec: Integer): Decimal
- cosh := fun (x: Float): Float
- x의 쌍곡 코사인 값을 구합니다.
- tanh := fun (x: Decimal, ?prec: Integer): Decimal
- tanh := fun (x: Float): Float
- x의 쌍곡 탄젠트 값을 구합니다.
6.7.1 naru.math.complex 네임스페이스
naru.math.complex 네임스페이스는 복소수를 다루기 위한 함수들을 제공합니다. naru.math 네임스페이스에 있는 함수들과는 달리, 여기에 있는 모든 함수들은 복소수를 인자로 받으며 복소수를 반환합니다. 예컨대 sqrt(-1)는 naru.math에서 오류를 반환하지만, 여기서는 1j를 반환할 것입니다.
두 종류의 함수를 서로 분리한 이유는 많은 복소 함수들이 일반 사용자가 이해하기 쉽지 않다는 데 있습니다. 예를 들어 대부분의 복소 함수는 다변수 함수(multi-valued function)이며, 따라서 함수의 값을 해석하는 데 있어서 주의가 필요합니다.
지수 함수
- sqrt := fun (x: Complex): Complex
- x의 제곱근을 구합니다. 이 함수는 다음과 같이 정의됩니다. [TBD]
- exp := fun (x: Complex): Complex
- ex를 구합니다. 이 함수는 다음과 같이 정의됩니다.
exp(a + bi) = exp(a) × (cos(b) + i sin(b))
- log := fun (x: Complex, ?base: Complex): Complex
- x의 자연 로그 값을 구합니다. base가 주어지면 밑을 그 값으로 하는 로그를 구합니다.
삼각 함수
naru.math의 함수들과 달리, 여기 있는 함수들은 항상 호도법(라디안)을 사용합니다.
- sin := fun (x: Complex): Complex
- x의 사인 값을 구합니다.
- cos := fun (x: Complex): Complex
- x의 코사인 값을 구합니다.
- tan := fun (x: Complex): Complex
- x의 탄젠트 값을 구합니다.
- arcsin := fun (x: Complex): Complex
- x의 아크사인 값을 구합니다. 아크사인 함수는 사인의 역함수입니다.
- arccos := fun (x: Complex): Complex
- x의 아크코사인 값을 구합니다. 아크코사인 함수는 코사인의 역함수입니다.
- arctan := fun (x: Complex): Complex
- x의 아크탄젠트 값을 구합니다. 아크탄젠트 함수는 탄젠트의 역함수입니다.
- arctan2 := fun (x: Complex, y: Complex): Complex
- y/x의 아크탄젠트 값을 구합니다. 제약 사항은 원래 함수와 동일합니다.
[TBW: branch cut 관련된 내용, 각종 함수들]
6.8 naru.datetime 네임스페이스
naru.datetime 네임스페이스는 날짜와 시간, 시각을 다루기 위한 자료형들을 담고 있습니다.
자료형
- class Date
- class Time
- class DateTime ← Date, Time
- class Duration
- class Calendar
6.9 naru.data 네임스페이스
6.9.1 naru.data.xml 네임스페이스
6.10 naru.util 네임스페이스
6.11 naru.culture 네임스페이스
참고문헌
문서의 저작권
메인 페이지를 참고하십시오.
Copyright © 2007–2008, Kang Seonghoon. All Rights Reserved.