[수학&코딩] Typescript로 표현한 함수
수학의 함수는 JSON과 같은 역할이다.
공역, 치역, 정의역
예를 들어 라는 함수가 있다.
이때 X와 Y를 아래와 같이 정의하면
type X = 1 || 2 || 3;
type Y = 1 || 2 || 3 || 4;
함수 f의 JSON은 아래와 같이 정의 할 수 있다.
let f: {[key: X]: Y} = {
1: 1,
2: 2,
3: 3
};
그렇다면 정의역, 공역은 아래의 함수로 구할 수 있고.
정의역 = Object.keys(f);
공역 = Object.values(f);
치역은 value가 될 수 있는 모든 값이다.
치역 = Y
일대일 함수
일대일 함수는 Object f의 Value가 Array가 되지 않는 함수를 말한다.
typeof f == {[key: X]: Y}
typeof f != {[key: X]:Array}
일대일 대응
일대일 대응은 아래의 식이 true인 함수이다
let f: {[key: X]: Y} = { 1: 1, 2: 2, 3: 3 };
returnObject.values(f) == Y;
항등 함수
Objecet f의 type이 아래와 같은 함수이다.
let f: {[key: X]: X};
상수 함수
key가 any지만 const varable을 return 하는 함수이다.
const constValue = 3;
functionf(key: any) {
return constValue;
}
합성 함수
Object[Object[key]] 인 함수이다.
let f: {[key: X] : Y} = {
1: 4,
2: 5,
3: 6
};
let g: {[key: Y] : Z} = {
4: 7,
5: 8,
6: 9
};
(g·f)(x) = g(f(x)) // Math
(g·f)(x) = g[f[x]]
합성 함수의 성질
아래의 코드 그대로 이해하면 된다.
let f = { ... }
let g = { ... }
g·f != f·g // Math
g[f[x]] != f[g[x]]
if( g[f[x]] == f[g[x]] )
// means g == f
합성 함수의 성질2
functionf(x: any) {return ... }
functiong(x: any) {return ... }
functionh(x: any) {return ... }
functionmerge(
a: (x: any) => any,
b: (x: any) => any
) {
return (x: any) => {
return a(b(x));
}
}
(f · g) · h = f · (g · h) // Math
merge(merge(f, g), h) == merge(f,merge(g, h))
역함수
key를 value로 사용하고, value를 key로 사용하는 함수이다.
function getInverseObject(
a: {[key: any]: any}
) {
let newFunction: {[key: any]: any} = {};
Object.keys(a).forEach((key) => {
newFunction[
a[key]
] = key;
});
return newFunction;
}