반응형
void main(List<String> args) {
// print("aa");
//수학적 정의에서 카테고리는 대상과 사상으로 구성되어 있다.
//대상은 카테고리 안에 있는 하나의 객체다.
//사상은 임의의 두 대상에 대해 a를 정의역으로 하고, b를 공역으로하는 무언가. 함수 같은 것.
const dea_sang_1 = 1;
var sa_sang_add = (int x) => x+1;
print(sa_sang_add(dea_sang_1));
// 펑터로 감싸도 카테고리 자체의 구조는 절대 변하지 않는다
// 펑터는 카테고리를 다른 카테고리로 바꿔주는 행위를 하는 것.
// 펑터가 카테고리를 바꿔주는 행위를 mapping 이라고함.
const dea_sang_x = 1;
const dea_sang_y = 2;
//Just 펑터 사용예제
var a = Just(3)
.map( (v) => v+100)
.map( (v) => v.toString())
.map( (v)=> v.length);
print(a.v);
}
// 이 펑터는 T타입의 값을 가지고 있다.
// map<U> : 이펑터의 사상을 적용하면 U 타입의 값을 가지는 새로운 펑터를 얻는다. 트랜스폼 함수라고 불린다.
// U Function(T) : 이 펑터의 사상이 작동하는 방식은 T 타입의 값을 입력받아 U 타입의 값을 출력하는 것이다.
// 펑터자체는 새로운 카테고리를 표현하는 수단.
abstract class Functor<T> {
Functor<U> map<U>(U Function(T) f);
}
// Just 펑터
// 아무런 추가기능없이 값을 감싸고 있기만하고 map 메소드를 통해서 그 값을 변경할 수 있는 펑터
class Just<T> implements Functor<T>{
final T v;
Just(this.v);
@override
Just<U> map<U>(U Function(T p1) f) {
return Just<U>(f(this.v));
}
}
'flutter' 카테고리의 다른 글
dart future then (0) | 2021.04.09 |
---|---|
Provider 예제 (0) | 2021.04.08 |
flutter - firebase 로그인, 로그아웃 (0) | 2020.12.21 |
isolate를 이용하여 데이터 처리하기 (0) | 2020.12.18 |
WidgetsBindingObserver (0) | 2020.12.08 |