flutter

dart functor

paulaner80 2020. 12. 28. 11:09
반응형




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<Umap<U>(U Function(T) f);
}


// Just 펑터
//    아무런 추가기능없이 값을 감싸고 있기만하고 map 메소드를 통해서 그 값을 변경할 수 있는 펑터

class Just<Timplements Functor<T>{

  final T v;

  Just(this.v);

  @override
  Just<Umap<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