由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - aop实际上是monad
相关主题
大牛给讲讲monad吧?想学FP最好不要从Scala开始
Learn monad in 10 minutesgoodbug和coltzhao大牛能不能给一个backend的定义?
我对为什么使用FP的理解 (补)这次Scala没有入选有点意外呀
看了一下monad,让我想到了Java的AOP看来跳了Scala的坑是对的
我还是认为scala的程序员水平高haskell 真是逆天, 各种特殊符号都有特殊用途
coltzhao等scala党说说streaming吧scala和monad
Haskell很难学。。php和node谁快
Java 不是纯oo, oo 不是 imperative programmingmonad就是一chaining pattern
相关话题的讨论汇总
话题: monad话题: aspect话题: aop话题: var话题: function
进入Programming版参与讨论
1 (共1页)
l**********n
发帖数: 8443
1
aspect实际上是monad
z****e
发帖数: 54598
2
反了
monad是aop的一种
aspect是一个抽象的概念
monad是design pattern,不仅包括了aspect
还定义了怎么操作
z****e
发帖数: 54598
3
我觉得这样理解不好
还是分开来,aop理解aop
monad理解monad
monad通过flatmap那些理解比较容易
coltzhao解释得很清楚,aop过来理解反而乱
aop难点是aspect,其他都简单
z****e
发帖数: 54598
4
monad是一种特殊的apect
aspect不管你怎么处理
但是monad定义了bind&return
你如果不满足这两个条件,就不是monad
但是完全可以是aspect
aspect的scope甚至超过了functor
比functor更加的general,functor毕竟定义了bind
而aspect只要你能找到pointcut,能作出相应的操作
就是aspect,未必是bind
从自由度来说,aop更加容易,因为限制少
比functor还自由,tradeoff就是你需要用它的编译器
所以scala等jvm上非java语言就不能用了
l******t
发帖数: 55733
5
aspect没有任何contract
l**********n
发帖数: 8443
6
Here is an aop example in angularjs:
(function() {

var geoDecorator = function($delegate) {
var locate = function() {
var start = new Date();
var result = $delegate.locate();
result.always(function () {
console.log("Geo location took: " + (new Date() - start) + "
ms");
});
return result;
};
return {
locate: locate
};
};
var testApp = angular.module("testApp");
testApp.config(["$provide", function ($provide) {
$provide.decorator("geo", geoDecorator);
}]);

}());
z****e
发帖数: 54598
7
写成这样多恶心
你看aspectj里面
public aspect PeopleAspect {
pointcut setXXX():
call(public void People.set*(*));

before():setXXX(){
System.out.println(">>> Log : modify people's attribute ...");
}
}
哪个是aspect,pointcut在哪里,before还是after都非常直观
你这里能直接看出pointcut在哪里吗?如果不认真parse代码的话

"

【在 l**********n 的大作中提到】
: Here is an aop example in angularjs:
: (function() {
:
: var geoDecorator = function($delegate) {
: var locate = function() {
: var start = new Date();
: var result = $delegate.locate();
: result.always(function () {
: console.log("Geo location took: " + (new Date() - start) + "
: ms");

1 (共1页)
进入Programming版参与讨论
相关主题
monad就是一chaining pattern我还是认为scala的程序员水平高
Scala的map和flatmap什么区别?coltzhao等scala党说说streaming吧
请教一个boost::bind的问题Haskell很难学。。
呼唤大侠们,我实在不能实现C++泛型的精神。Java 不是纯oo, oo 不是 imperative programming
大牛给讲讲monad吧?想学FP最好不要从Scala开始
Learn monad in 10 minutesgoodbug和coltzhao大牛能不能给一个backend的定义?
我对为什么使用FP的理解 (补)这次Scala没有入选有点意外呀
看了一下monad,让我想到了Java的AOP看来跳了Scala的坑是对的
相关话题的讨论汇总
话题: monad话题: aspect话题: aop话题: var话题: function