naru standard library

Revision 3.1 (slated for 2009-01-XX)

한국어판


이 문서는 강 성훈이 설계한 일반 목적의 객체 지향 프로그래밍 언어인 나루 프로그래밍 언어의 셋째 판을 위한 표준 라이브러리를 서술합니다.

목차

6장: 라이브러리

나루는 기본 자료형과 이들을 보조하는 함수들을 비롯해, 편의를 위한 기능이나 외부 환경과 통신하기 위한 인터페이스 등을 표준 라이브러리로 규정하고 있습니다. 이들 라이브러리는 naru 네임스페이스에 들어 있습니다.

이 장에서는 설명의 편의를 위하여 다음과 같은 형 이름이 이미 있다고 가정합니다. 일부 이름은 import 문을 써야 사용할 수 있습니다.

표 6.1 형 이름 대응표
줄인 이름실제 위치
Localenaru.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 클래스는 참 또는 거짓 값을 나타냅니다. 이 클래스는 상수 리터럴 truefalse를 통해 생성됩니다.

생성자
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**0ArithmeticError 예외를 발생시켜야 합니다.
#**# := 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]
문자에 할당된 모든 이름을 반환합니다. namenil이 아니라면 이 목록에 포함되어야 합니다.
category: Symbol
유니코드 문자 분류를 반환합니다. 여기에는 다음과 같은 값이 포함됩니다.
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.5 naru.platform 네임스페이스

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.