z****e 发帖数: 54598 | 1 +观感正面,-观感负面
lambda +,写程序更简洁些
currying -,混乱,map到底是func还是obj?
1st-class func -,混乱,理由同上,同时需要跟immutable配合
immutable -,同上
monad +,collection部分不错,但是如果是包装其他的则观感负面
functor +,不错,理由同上
dynamic type +,有限滴使用,搬运数据时候用,否则混乱
async +,可以提升性能
single thread -,这哥们是来搞笑的
scala以上全部都可以做,也都可以不做
clojure到dynamic type以上都必需做到,谁让它纯呢?
java基本上就只允许做观感正面部分,除了dynamic type
which可以交给groovy完成,负面部分不是特别麻烦就是会被禁
java8加了lambda
vert.x有async
rxjava有functor和monad |
|
z****e 发帖数: 54598 | 2 只取lambda不取fp的其他部分
就不会造成机能下降撒
比如immutable就可以不用
单纯的lambda是可以提升执行效率的
可读性也就是flatten通过rxjava来解决 |
|
p*****2 发帖数: 21240 | 3 type Any interface{}
type ArrayOps []interface{}
func (arr ArrayOps) Map(lambda func(Any) Any) ArrayOps {
res := make(ArrayOps, len(arr))
for i, v := range arr {
res[i] = lambda(v)
}
return res
}
func main() {
b := ArrayOps{1, 2, 3, 4, 5}.
Map(func(i Any) Any { return strconv.Itoa(i.(int) * 2) })
fmt.Println(b)
} |
|
z****e 发帖数: 54598 | 4 你说得没错,thread一样做async,而且这正是java8的改进方向
关键在于脚本无法启动thread,导致thread和process绑定
绝大多数资源都丢给process去浪费了,能够自由控制thread的语言强势多了
能够做出更为强大的framework,比如vert.x
补充一点,你说的future那个稍微有些落伍
lambda出来之后,可以不用future了,可以focus在以lambda为重点的callback上
这样就能实现真正的async了,以前future需要wait,这就有block
async
pool |
|
p*u 发帖数: 2454 | 5 来自主题: Programming版 - 编程的宗派 总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然现在出了两个帮派,就有人积极地做它们的帮众,互相唾骂和残杀。
然后呢,又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问
题的工具就是好工具!
我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点点抽
象能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构
,structure),它的本质就是一个从名字到数据的“映射表”(map)。你可以用名字
从这个表里面提取相应的数据。比如point.x,就是用名字'x'从记录point里面提取相
应的数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即
使你插入了新的数据成员,仍然可以用原来的名字来访问已有的数据,而不用担心下标
错位的问题。
所谓“对象思想”(区别于“面向... 阅读全帖 |
|
p*****2 发帖数: 21240 | 6 比如下边这段代码,怎么能好看一点?有什么trick吗?
func readUserCSV(file string, lambda func(string, string) error) error {
csvfile, err := os.Open(file)
if err {
return err
}
defer csvfile.Close()
reader := csv.NewReader(csvfile)
reader.Read()
_for:
for {
record, err := reader.Read()
switch err {
case nil:
if err = lambda(record[0], record[1]); err != nil {
return err
}
case io.EOF:
break _for
... 阅读全帖 |
|
d****n 发帖数: 1637 | 7 抛砖引玉
func readUserCSV(file string, lambda func(string, string) error) err error {
csvfile, err := os.Open(file)
if err {
return err
}
defer csvfile.Close()
reader := csv.NewReader(csvfile)
reader.Read()
for {
if err != nil{
if err == io.EOF{
err = nil
}
break
}
record, err := reader.Read()
if err !=nil{
continue
}
... 阅读全帖 |
|
c*******0 发帖数: 5247 | 8
switch?
csv parsing就两种情况,error和eof。error你要细分就是两种,ErrReadRune和
ErrQuote。你去哪找"if else多了"的情况?
你现在引入lambda之后,lambda会return err,这个是readUserCSV的caller应该去管
的,而不是readUserCSV去管的。
先把自己的需求搞清楚。 |
|
a***n 发帖数: 623 | 9 1 package main
2
3 import (
4 "encoding/csv"
5 "io"
6 "os"
7 )
8
9 func readUserCSV(file string, lambda func(string, string) error) error {
10 csvfile, err := os.Open(file)
11 if err != nil {
12 return err
13 }
14 defer csvfile.Close()
15
16 reader := csv.NewReader(csvfile)
17 reader.Read()
18
19 for {
20 record, err := reader.Read()
21 if err != nil &... 阅读全帖 |
|
|
l***p 发帖数: 358 | 11 java的lambda + functional interface = 匿名类
可读性差是lambda 的通病吧,刚开始真的很不习惯,靠IDE,习惯了就好 |
|
l******t 发帖数: 55733 | 12 这真不是个事。以索南的底子,把wiki里面的lambda和typed lambda看懂里面的推导自
己整一遍就差不多了。 |
|
w***g 发帖数: 5958 | 13 前两天折腾seastar发现必须C++14,所以我也开始转了。科普一下C++14的几个
接地气的新特性。
auto sqr (int n) { // 自动返回类型
return n * n;
}
// 自动lamba类型。这个我早就很不爽了。
sort(v.begin(), v.end(), [](auto a, auto b){return a.key < b.key;});
// extended capturing
async(launch::async, [x = std::move(x)]() {
...
});
这个特性很重要。如果x是一个超大的对象,在主线程中没用,只需要在
lambda里面用,C++11下只能capture reference,而必须在主线程中保证
x的生存期。用C++14的capture,x的ownership就转移到lambda里面了。 |
|
d****i 发帖数: 4809 | 14 auto和lambda都非常不好
auto有违反C++作为静态语言的宗旨,多谢一个类型又如何,让读代码的人更容易理解
lambda完全不必要,写成单独的函数,或者用function pointer或者functor更清晰明
了易懂易维护,完全没有必要为了少些两行而搞得很丑 |
|
t****m 发帖数: 135 | 15 如果你用其他c++11特征比如lambda,auto不是可选项,是必须项。
lambda的型别不能被手工推导。
例子:
auto hello = [](){printf("Hello World!\n";} |
|
h**6 发帖数: 4160 | 16 是大部分lambda可以转成std::function而已。也有部分uncopyable的lambda不能转成
std::function。 |
|
s******u 发帖数: 501 | 17 lambda本质上是anonymous function,也是nested function(函数内部定义函数)的
一种形式。C++引进lambda也就意味着必须要支持nested function,同时也要引入
closures,first-class function这些重要的概念。
当然最终结果是给本来就很灵活的C++多提供了一种paradigm, 至于是不是真的需要,
那就是见仁见智的事情了,没看前面吵的这么凶啊,呵呵 |
|
h*h 发帖数: 27852 | 18 http://www.yinwang.org/blog-cn/2015/04/03/paradigms
编程的宗派
总是有人喜欢争论这类问题,到底是“函数式编程”(FP)好,还是“面向对象编程”
(OOP)好。既然出了两个帮派,就有人积极地做它们的帮众,互相唾骂和鄙视。然后
呢又出了一个“好好先生帮”,这个帮的人喜欢说,管它什么范式呢,能解决问题的工
具就是好工具!我个人其实不属于这三帮人中的任何一个。
面向对象编程(Object-Oriented Programming)
如果你看透了表面现象就会发现,其实“面向对象编程”本身没有引入很多新东西。所
谓“面向对象语言”,其实就是经典的“过程式语言”(比如Pascal),加上一点抽象
能力。所谓“类”和“对象”,基本是过程式语言里面的记录(record,或者叫结构,
structure),它本质其实是一个从名字到数据的“映射表”(map)。你可以用名字从
这个表里面提取相应的数据。比如point.x,就是用名字x从记录point里面提取相应的
数据。这比起数组来是一件很方便的事情,因为你不需要记住存放数据的下标。即使你
插入了新的数据成... 阅读全帖 |
|
h*h 发帖数: 27852 | 19 【 以下文字转载自 Military 讨论区 】
发信人: hsh (nidaye), 信区: Military
标 题: 王垠:为Java说句公道话
发信站: BBS 未名空间站 (Mon May 9 18:28:59 2016, 美东)
http://www.jianshu.com/p/be4b4dee5a57
为Java说句公道话
有些人问我,在现有的语言里面,有什么好的推荐?我说:“Java。” 他们很惊讶:
“什么?Java!” 所以我现在来解释一下。
Java超越了所有咒骂它的“动态语言”
也许是因为年轻人的逆反心理,人们都不把自己的入门语言当回事。很早的时候,计算
机系的学生用Scheme或者Pascal入门,现在大部分学校用Java。这也许就是为什么很多
人恨Java,瞧不起用Java的人。提到Java,感觉就像是爷爷那辈人用的东西。大家都会
用Java,怎么能显得我优秀出众呢?于是他们说:“Java老气,庞大,复杂,臃肿。我
更愿意探索新的语言……”
某些Python程序员,在论坛里跟初学者讲解Python有什么好,其中一个原因竟然是:“
因为Python不是Ja... 阅读全帖 |
|
x****u 发帖数: 44466 | 20 是啊,而且都是有数学证明的。求解lambda演算及其等价变换的代价是很高的,用极简
优美的lambda演算构建复杂数理逻辑会倾向于指数爆炸。
所以码农才值钱,因为基于概率和经验的求解方法数学上更有效。Lisp这种映射到人脑
神经网络上代价更高的原教旨fp才会逐渐淡出。 |
|
m******t 发帖数: 1171 | 21 java确实在考虑之列,不过java的优点似乎没有多到让我从c++转过来。
不过我不太懂java,能否介绍下java的优势
我的拙见:
java能干的,我用c++也能干,也没有太麻烦。
而且c++11以后的新性能让c++简洁性又有提升,有了move,有了lambda,还有了
variadic template。
lambda + STL container + 各种iterator + auto
c++已经是半个functional了。 |
|
g****t 发帖数: 31659 | 22 Python可以运行时直接往类里面加lambda
这可能是最糙快猛的办法了
: 用lambda很容易就解耦了吧?
|
|
|
w***g 发帖数: 5958 | 24 现在也有lambda了. 但即便这样简洁性也还是比openmp差太远.
以前没有lambda时, 为了parallelize一点东西费老了劲了, 而那时
就有omp parallel for了. 所以我一直不用tbb.
为了一点点性能牺牲代码的优美性不值得.
我知道opencv是用tbb的. |
|
g****t 发帖数: 31659 | 25 这个不容易证明。当年是图灵自己证明的。
简化证明我印象里:
用图灵机写一个lambda解释器。证明Turing 》 Lambda
然后还用Y combinator证明一个Turing 《 General recursive (Godel)
然后用Church coding证明 Godel= Church
A》B,B《A 所以能力相同?
步骤我记不太清了。very shock |
|
y***c 发帖数: 676 | 26 做成倒金字塔型,上面两个lambda,下面一个,效果如何?
三个lambda不同颜色,有啥讲究? |
|
g****t 发帖数: 31659 | 27 你写过yield,内存快照,状态机之类的东西吗?
我的话你等着放5年看好了。我的看法很简单,java coroutine做出来也没用,不会有
多少人用。没什么前途。不值一提。Java还是早点搞定
多维数组是王道。
FP的话,
Lambda calculus和范畴论是两个年代的事情。对实用来说,
我现在看到最要紧的是要不要reference transpancy.
: 有没有戏看现在一大堆语言都在干嘛不就知道了
: eclipse的ceylon都闹着要加上去
: 用c和用硬件的关其他人什么事?
: 我们用一个feature是用来解决问题的
: 不是用来装逼卖弄的
: 偶尔写一两个lambda,能够接受
: 但是要求全部人都开始flatmap,monad,那我只能祝你好运
: 这个feature能够解决io时候blocking的问题
: 这是最基本的出发点
: 能解决这个问题,在保证性能的同时又能保证代码的可读性
|
|
z****e 发帖数: 54598 | 28 刚有个typo,是lambda
不仅仅是异步,具体点应该是带有lambda的异步api |
|
g****t 发帖数: 31659 | 29 我看着就是典型的假项目
难道以前那么多java coroutine 乱七八糟库就没卖点和吹点吗?非要等你lambda来了
才可以吹。
本人不claim自己正确
打算看着你能high几天
: 你这里中间就少一个actor model
: 一直就没有一个减少线程,减少lock的过程
: 如果没有lambda,这个是很难做到的
: 如果没有减少lock,coroutine是没有太大价值的
: java强的地方是不是system programming
: 我在解释实现,真正用起来的话,就跟普通的同步api一样用
: 所以用户只需要换一个api,就能实现性能上几十倍的提升
: 它为什么不用?
: 它要是这个时候还选择去用高阶函数,那才是闲着蛋疼呢
: 说了半天,你就是少了一个中间过程,所以就是看不懂
|
|
g****t 发帖数: 31659 | 30 像老王喜欢的CPS什么的元语言层面上的变换关系etc,多数来自图灵1936年证明lambda
calculs可以实现图灵机
文章最后一节。也就是用lambda calculs/ function call实现goto。
然后大家一代一代的换着花样玩。
这个东西过期了 |
|
g****t 发帖数: 31659 | 31 functional programming逐步变成非显学。人少的时候我来趁机发个言。
计算机科学第一重要的自然律,我觉得是universal Turing machine
或者church-turing thesis的构造性证明。
它绝对不是显然的。一个系统内部可以有自己的严格表示。这绝对不是显然的。
觉得是显然的,可以猜一下多久量子计算机会有universal machine
三大计算系统,Godel,Church,Turing的等价性,是Turing证明的。
Church率先发表,但是证明中间有gap。正确的证明需要通过Turing 的工具。
Godel没有指出Church证明中的数学正确性问题(我怀疑他知道)。
Godel毫不含糊的说,Turing统一的定义了可计算性。(指的是概念的建模方面)
从实践的角度,图灵1936年的一个单独论文提出,给一个函数f(n),
要定义f(n-1)的一些属性,有一个办法可以用函数调用方便的做到。
这就是loop用lambda calculus/function call实现的一般技术。
或者goto用函数调用来实现的起源。
这是我看到的第一个用... 阅读全帖 |
|
g****t 发帖数: 31659 | 32 functional programming逐步变成非显学。人少的时候我来趁机发个言。
计算机科学第一重要的自然律,我觉得是universal Turing machine
或者church-turing thesis的构造性证明。
它绝对不是显然的。一个系统内部可以有自己的严格表示。这绝对不是显然的。
觉得是显然的,可以猜一下多久量子计算机会有universal machine
三大计算系统,Godel,Church,Turing的等价性,是Turing证明的。
Church率先发表,但是证明中间有gap。正确的证明需要通过Turing 的工具。
Godel没有指出Church证明中的数学正确性问题(我怀疑他知道)。
Godel毫不含糊的说,Turing统一的定义了可计算性。(指的是概念的建模方面)
从实践的角度,图灵1936年的一个单独论文提出,给一个函数f(n),
要定义f(n-1)的一些属性,有一个办法可以用函数调用方便的做到。
这就是loop用lambda calculus/function call实现的一般技术。
或者goto用函数调用来实现的起源。
这是我看到的第一个用... 阅读全帖 |
|
w***g 发帖数: 5958 | 33 除非对FP及其实现(如何从lambda演算编译成x86指令, lazy evaluation何时
被求值)有比较深入的理解,一般人其实很难对FP代码的性能有比较准确的预期。
运算在什么时候发生在哪行代码,花了多少内存,都要绕几个弯才能想明白。
所以FP语言高性能,我觉得是个神话。
我这里的FP特指haskell。但我觉得不失一般性。
第一,haskell是一种纯FP语言。别的混合型语言,你说不好是哪个成分在起作用。
第二,haskell是编译型的。解释型语言讨论性能没有现实意义。
实际写多线程多核,C/C++或者java/C#,完全可以写const function。
我不认为这是FP特性。如果是const function,里面哪怕都是for loop实现的,
也还是可以很容易并行化,完全不需要写成lambda演算。所需要的,只是
理解const关键字怎么用而已。 |
|
c****r 发帖数: 576 | 34 最简单的Logistic Map: X(n+1) = r*X(n)*(1-X(n))
function x = orbit(x0,r1,r2,m,n)
% draw the orbit diagram when r(lambda) change, nesting function iter.m
% orbit(x0,r1,r2,m,n)
% x0: initial condition
% r1
% m: the sampling times between the r interval
% n: the iteration times for the logistic equation, in reality, n is the
% number of time points
if r1>=r2
error('r1 should be smaller than r2!!!');
else
if m==1
x = zeros(1,n);
x(1,:) = iter(r1,x0,n);
pl... 阅读全帖 |
|
C*******e 发帖数: 4348 | 35 我对Phage的知识还停留在最基础的阶段
想问问T4和Lambda到底有多少区别
如果说某个自养细菌的Phage都是类似T4的
那么一个基于Lambda Prophage的同源重组系统在这个自养细菌里能不能work呢?
问题有点弱啊
牛人见谅~! |
|
f*y 发帖数: 876 | 36 T4 and lambda are both dsDNA tailed phages of E.coli. Both of them are being
studied as model phages,T4 as a virulent phage, and lambda as a temperate
phage. Despite of minor sequence similarity, many essential structural
proteins share the same folds, including the major capsid protein, portal
protein, tail tube protein and terminase. So the two phages must have
evolved from a common ancestor. However, because of the different life
styles (virulent/temperate), they have huge differences in the |
|
c*******0 发帖数: 190 | 37 "Resolution" is determined by FWHM of lateral excitation profile which is
usually called "diffraction limit" = 0.61*lambda(ex)/N.A.
For confocal system, this becomes as 0.61*lambda(ex)/N.A*(2^1/2) |
|
s*****j 发帖数: 6435 | 38 你还要撑? 那就来问你一下. 下面是你的原话.
"另外一个是你问的这个n. 这个在物理学的角度可以这样理解,镜头通过介质和
盖薄片在看一个Airy disk的虚像,如果玻璃两侧的介质是一样的话,那么
这个Airy disk 的像的有效半径就应该是lambda/2n。"
1. airy disk 在哪? 像方空间还是物芳空间?
2. 什么叫Airy disk的虚像? 这个虚像成在哪? 是放大的像还是缩小的像.
3. "这个Airy disk 的像" 的半径是多大? "有效半径就应该是lambda/2n", 这个"
有效"半径有是怎么算出来的?
|
|
s******y 发帖数: 17729 | 39 BSA定量本来就是看看还凑合,就像用lambda DNA点样定量DNA一样,你看现在发文章,
谁还把lambda DNA定量往出端? |
|
C******a 发帖数: 10 | 40
from here,we get Mu^(n+1)=M V\Lambda V^(-1) u^(n)
can we say u^(n+1)=V \lambda V^(-1)?
if so, ||u^(n+1)||<\lambda_max ||u^(n)|| anyway.that's what's confusing me...
i don't even need the constraints of ||u^(n+1)||<||u^(n)|| |
|
k******n 发帖数: 13 | 41 Have a pulse signal spectrum. The outline is like
(sin(pi*w*sin(theta)/lambda)/(pi*w*sin(theta)/lamda))^2. But under the
outline, there are a few pulse signal.
But don't know how to fit the envelope for it. Think the envelope function is
(sin(pi*w*sin(theta)/lambda)/(pi*w*sin(theta)/lamda))^2. But what the
mathematic relationship between the signal and the envelope? I can find the
mathtools like mathcad, matlab and mathematica. So if there is any code of
them, it will be more helpful.
Thanks. |
|
w*********r 发帖数: 488 | 42 原题如下:
given function V in terms of S and t,V(S,t)
parameters are:rho,alpha,lambda,theta,mu,sigma
the PDE is:
rho*V(S,t)=alpha*S+lambda*(mu-S)*Vs(S,t)+theta*(Vs(S,t)).^2+0.5*sigma*(S-S.^2)*Vss(S,t)-Vt(S,t)
S is in [0,1],and t is in [0,T],T is a constant.
the boundary condition is V(S,0)=0
Vs is the first-order partial derivative of V wrt S, and Vt is first-order partial derivative of V wrt t.
昨天晚上在MATLAB里面我试了approximation+Broyden method,因为发现Broyden有现成的function(也我们老师自己编的,不是MATLAB自带的),newton那个总说有错误 |
|
w*******U 发帖数: 256 | 43 i reduced the PDEs to an eigenvalue problem, i.e. A(lambda)*x=0. if there
exists a non-trivial solution then det(A)=0. so now i need to numerically
calculate zeros of the determinant P(lambda)=0. does anyone know a good
library or algorithm to do this job? A is a complex matrix and its size is at least 500x500. |
|
w****r 发帖数: 748 | 44 x_1^*=0 means you don't wanna consume x_1. So the marginal utility U_1(x_1,x
_2)|x^* \leq p_1.
Now the problem becomes choosing x_2^*, given x_1^* is zero.
The lagrange function is
U(0,x_2)+\lambda*(M-p_2*x_2)
F.O.C
L_2=U_2(0,x_2)|x^*-p_2=0
L=M-p_2*x_2 \leq 0
As U_2(0,x_2^*)=p_2>0, the more x_2 the better. You will spend all your
money, so L=0. Of course, you can argue that the shadow price \lambda is
positive to get L=0. |
|
z*r 发帖数: 9 | 45 You can say it's the same term, for a grating with
period a, illuminated by incident coherent beam, then
the diffracted light has the frequency cos(sita)/lambda,
but a*cos(sita)=m*lambda according to grating theorem,so
the frequency could also be represented as m/a, which is
the fouriers series's each order's frequency in
"image processing", so we can see in physical optics and
image science, the two term is actually equivalent. |
|
o*******i 发帖数: 396 | 46 depends on ur prop model.
不同的model又不同的衰减特性
最奸蛋的例子,就是自由衰落。
eg, free space, in \ns-allinone-2.29\ns-2.29\mobile\propagation.cc
你能看到这个函数。自己打printf试试看啊。
这事进入ns2里面搞清wirelessnetwork传输的必经之路
double
Propagation::Friis(double Pt, double Gt, double Gr, double lambda, double L,
double d)
{
/*
* Friis free space equation:
*
* Pt * Gt * Gr * (lambda^2)
* P = --------------------------
* (4 * pi * d)^2 * L
*/
if (d == 0.0) //XXX pr |
|
c******k 发帖数: 1140 | 47 老板购要再购买一片商业的 MQW InP wafer. 但是商业公司给你的wafer信息就是
Photoluminescence (PL) peak在什么波长, 其他的参数人家不管。
我们已经购买了一片,PL wavelength 在1509.1nm. Spectral width at FWHM: 1440nm
-1542nm. 然后我们制作了一个 1.0mm long FP laser, 首先测 ASE spectrum (低于
阈值电流), 发现峰值波长在1520nm, 然后多加电流让laser 发激光,lasing
wavelength 就在1515nm.
实际上我们期望一个在1535nm左右发激光的laser diode. 那么问题是我们购买的wafer
的 PL peak wavelength 不合适?还是怎么样? 如果是wafer问题,一般来说制作一个
普通的FP laser diode, 希望激射波长在Lambda 1, 而wafer 的PL peak 在Lambda 2
,他们之间有什么经验性的公式或者有什么一个差值范围可以follow吗?
谢谢! |
|
f*******y 发帖数: 32 | 48 抛砖引玉~~~
如果用FREE SPACE LOSS 公式L=(\lambda/4/pi/d)^2, where
\lambda=3e8/0.7e9, and d=sqrt(547^2+(269/3.3)^2)=553, 计算L大约等于80dB 衰
减。 基站功率为30+10*log10(75)大约为50dBm, 接收到的信号为-30dBm,远小于家里
WIFI的功率。 |
|
m**u 发帖数: 51 | 49 老大,我翻了翻书,觉得你说的应该没错.可是我该怎么通过"6个月卖两件"来算LAMBDA的值
呢?显然lambda=2不对啊! |
|
r**********e 发帖数: 133 | 50 I guess you might want to try the following:
Let \lambda=x_{1}'Wx_{1}, and then find PCA's for matrix
V=W-\lambda*x_{1}*x_{1}'. |
|