提问人: 提问时间:10/29/2020 更新时间:10/29/2020 访问量:49
杂质会影响操作的关联性吗?
Can impurity affect the associativity of an operation?
问:
关联性是一个理想的属性,在 FP 中的许多操作中很常见。现在我想知道一个不纯的功能是否会干扰它。我发现的唯一例子并不真正令人信服,因为我不确定空函数是否算作正确的函数(严格来说),此外,这个例子看起来相当做作。
以下内容是用 JS 编写的,但希望是不言自明的:
// function composition
const comp = f => g => x => f(g(x));
const foo = () => 1;
const bar = () => Math.round(Math.random() * 100);
// Set functor (ignore the hideous implementation)
const map = f => s => {
const r = new Set();
s.forEach(x => r.add(f(x)));
return r;
};
const lhs = map(comp(bar) (foo));
const rhs = comp(map(bar)) (map(foo));
const set1 = lhs(new Set([1, 2, 3]));
const set2 = rhs(new Set([1, 2, 3]));
console.log(Array.from(set1)); // yields an array filled with up to three random integers
console.log(Array.from(set2)); // yields an array filled with a single random integer
我不确定这个例子是否可以被视为证据。有没有更令人信服的例子?
答: 暂无答案
上一个:如何将故障从内部功能推迟到外部
下一个:函数式编程是否表现出控制流?
评论