일단 aop도 범위를 한정해야함
aop는
AOP m => (a -> m b) -> (a -> m b)
타입에 대해서 먹힘.
m은 대충 부작용을 담고있고
부작용을 앞뒤로 추가하는거임.
대충
a는 튜플이고
AOP대상은 커리잉이 불가능함.
(a1, a2, ...) 가 들어오면
이거를 (a1', ...) 로 변환해서
기존의 함수 f에 집어넣고
그렇게 얻은 m b 앞뒤로
m () 타입을 시퀀스하는것.
이게 전부임.
글고 이거 걍 수동으로 진행하고.
객체지향 써.
이렇게 조작한것들을 객체로 래핑해서
얘를 호출하는애들은 코드변경이없도록.
끝.
이게 poho임.
aop는 부작용있는 함수들은 전부다 적용가능하고
반대로, 커리잉 불가능함.
순수함수들은 전부
커리잉을 쓸수있고
객체에서 끄집어내오지 않고 직접사용함.
부작용이 있는 애들은
모나드로 감싸고
그걸 객체안에 집어넣어서 다시 export하고
그 객체의 프로퍼티 안에는 aop 시퀀스들이 들어가는거.
이 코딩방식을 나중에 뭐 언어차원에서 지원받으면 좋은거고
aop는
AOP m => (a -> m b) -> (a -> m b)
타입에 대해서 먹힘.
m은 대충 부작용을 담고있고
부작용을 앞뒤로 추가하는거임.
대충
a는 튜플이고
AOP대상은 커리잉이 불가능함.
(a1, a2, ...) 가 들어오면
이거를 (a1', ...) 로 변환해서
기존의 함수 f에 집어넣고
그렇게 얻은 m b 앞뒤로
m () 타입을 시퀀스하는것.
이게 전부임.
글고 이거 걍 수동으로 진행하고.
객체지향 써.
이렇게 조작한것들을 객체로 래핑해서
얘를 호출하는애들은 코드변경이없도록.
끝.
이게 poho임.
aop는 부작용있는 함수들은 전부다 적용가능하고
반대로, 커리잉 불가능함.
순수함수들은 전부
커리잉을 쓸수있고
객체에서 끄집어내오지 않고 직접사용함.
부작용이 있는 애들은
모나드로 감싸고
그걸 객체안에 집어넣어서 다시 export하고
그 객체의 프로퍼티 안에는 aop 시퀀스들이 들어가는거.
이 코딩방식을 나중에 뭐 언어차원에서 지원받으면 좋은거고
댓글 0