Discussion:
[Lisp-cn] scheme 静态分析工具
Chaos Eternal
2014-02-27 02:45:44 UTC
Permalink
谁能推荐个能用的scheme静态分析工具啊?
racket不算。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,�
Nala Ginrut
2014-02-27 03:18:27 UTC
Permalink
你要用来做什么?编码纠错?性能分析?形式化验证?安全检测?
静态分析是个很空泛的概念
Post by Chaos Eternal
谁能推荐个能用的scheme静态分析工具啊?
racket不算。
--
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,请访问 https://groups.g
Chaos Eternal
2014-02-27 06:02:45 UTC
Permalink
主要也就是想纠错吧。
比如,发现类型错啊,死代码啊,什么的。
Post by Nala Ginrut
你要用来做什么?编码纠错?性能分析?形式化验证?安全检测?
静态分析是个很空泛的概念
Post by Chaos Eternal
谁能推荐个能用的scheme静态分析工具啊?
racket不算。
--
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,请访问 https://groups.go
Nala Ginrut
2014-02-27 08:32:14 UTC
Permalink
倖眮工具应该埈少。

我只谈猖译型(解释型就别自扟麻烊了)。
銖先Scheme根本䞍䌚生成静态CFG(语蚀特性䞎实现无关)这意味着䞍倧可胜提前做䞀次控制流分析然后再正匏猖译。䜆这话䞍绝对(任䜕事情沟到continuation郜䞍再绝对)有䞀种解决方案叫k–CFA简单来诎就是利甚了CPS来实现CFA(control
flow analysis)。这䞪比蟃前沿了我反正没有见到成型的工具。

劚态类型语蚀䞀般䞍需芁关心类型错误(䞍是诎沒甚倄)䜜类型分析䞻芁是䞺了䌘化(给代码生成或内联展匀提䟛额倖参考)。
这种需求的话倖眮工具是沒倪倧价倌的䞀定芁基于具䜓猖译噚实现(包括利甚猖译噚钩子)。

dead code elimination, CSE等等猖译时可做的䌘化通垞郜内眮圚猖译噚后端也䞍需芁倖眮分析噚。

䜠劂果只需芁语法层面的分析扟lint工具就可以䜆据我所知也埈少因䞺沒倪倧必芁Scheme埈隟甚错。

总而蚀之我䞍觉埗Scheme需芁倖眮静态分析工具事实䞊也几乎沒有。
䞻芁也就是想纠错吧。
比劂发现类型错啊死代码啊什么的。
䜠芁甚来做什么猖码纠错性胜分析圢匏化验证安党检测
静态分析是䞪埈空泛的抂念
谁胜掚荐䞪胜甚的scheme静态分析工具啊
racket䞍算。
--
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
Liutos
2014-02-28 01:43:05 UTC
Permalink
感觉劚态类型语蚀的类型错误还是挺容易遇到的尀其圚䞀些凜数倄理后返回了䞀䞪倱莥情况䞋的倌的时候XD
Post by Nala Ginrut
倖眮工具应该埈少。
我只谈猖译型(解释型就别自扟麻烊了)。
銖先Scheme根本䞍䌚生成静态CFG(语蚀特性䞎实现无关)这意味着䞍倧可胜提前做䞀次控制流分析然后再正匏猖译。䜆这话䞍绝对(任䜕事情沟到continuation郜䞍再绝对)有䞀种解决方案叫k–CFA简单来诎就是利甚了CPS来实现CFA(control
flow analysis)。这䞪比蟃前沿了我反正没有见到成型的工具。
劚态类型语蚀䞀般䞍需芁关心类型错误(䞍是诎沒甚倄)䜜类型分析䞻芁是䞺了䌘化(给代码生成或内联展匀提䟛额倖参考)。
这种需求的话倖眮工具是沒倪倧价倌的䞀定芁基于具䜓猖译噚实现(包括利甚猖译噚钩子)。
dead code elimination, CSE等等猖译时可做的䌘化通垞郜内眮圚猖译噚后端也䞍需芁倖眮分析噚。
䜠劂果只需芁语法层面的分析扟lint工具就可以䜆据我所知也埈少因䞺沒倪倧必芁Scheme埈隟甚错。
总而蚀之我䞍觉埗Scheme需芁倖眮静态分析工具事实䞊也几乎沒有。
䞻芁也就是想纠错吧。
比劂发现类型错啊死代码啊什么的。
䜠芁甚来做什么猖码纠错性胜分析圢匏化验证安党检测
静态分析是䞪埈空泛的抂念
谁胜掚荐䞪胜甚的scheme静态分析工具啊
racket䞍算。
--
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub䞻页https://github.com/Liutos
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
Nala Ginrut
2014-02-28 03:18:08 UTC
Permalink
感觉动态类型语言的类型错误还是挺容易遇到的,尤其在一些函数处理后返回了一个失败情况下的值的时候XD
我肯定了它的价值呢,能有一个最好
外置工具应该很少。
我只谈编译型(解释型就别自找麻烦了)。
首先,Scheme根本不会生成静态CFG(语言特性,与实现无关),这意味着不大可能提前做一次控制流分析然后再正式编译。但这话不绝对(任何事情沾到continuation都不再绝对),有一种解决方案叫k–CFA,简单来说就是利用了CPS来实现CFA(control
flow analysis)。这个比较前沿了,我反正没有见到成型的工具。
动态类型语言一般不需要关心类型错误(不是说沒用处),作类型分析主要是为了优化(给代码生成或内联展开提供额外参考)。
这种需求的话外置工具是沒太大价值的,一定要基于具体编译器实现(包括利用编译器钩子)。
dead code elimination, CSE等等编译时可做的优化通常都内置在编译器后端,也不需要外置分析器。
你如果只需要语法层面的分析,找lint工具就可以,但据我所知也很少,因为沒太大必要,Scheme很难用错。
总而言之我不觉得Scheme需要外置静态分析工具,事实上也几乎沒有。
主要也就是想纠错吧。
Post by Chaos Eternal
比如,发现类型错啊,死代码啊,什么的。
Post by Nala Ginrut
你要用来做什么?编码纠错?性能分析?形式化验证?安全检测?
静态分析是个很空泛的概念
Post by Chaos Eternal
谁能推荐个能用的scheme静态分析工具啊?
racket不算。
--
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling
我的GitHub主页:https://github.com/Liutos
--
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out��
Chaos Eternal
2014-02-28 05:17:44 UTC
Permalink
比如我最近就遇到一个python程序,执行的时候报类型不对。
但是报错的这个函数是如何收到这个错误类型的数据的,完全没概念啊。如果能有静态分析工具能做类型检查,就可以提高生产率嘛
感觉动态类型语言的类型错误还是挺容易遇到的,尤其在一些函数处理后返回了一个失败情况下的值的时候XD
外置工具应该很少。
我只谈编译型(解释型就别自找麻烦了)。
首先,Scheme根本不会生成静态CFG(语言特性,与实现无关),这意味着不大可能提前做一次控制流分析然后再正式编译。但这话不绝对(任何事情沾到continuation都不再绝对),有一种解决方案叫k–CFA,简单来说就是利用了CPS来实现CFA(control
flow analysis)。这个比较前沿了,我反正没有见到成型的工具。
动态类型语言一般不需要关心类型错误(不是说沒用处),作类型分析主要是为了优化(给代码生成或内联展开提供额外参考)。
这种需求的话外置工具是沒太大价值的,一定要基于具体编译器实现(包括利用编译器钩子)。
dead code elimination, CSE等等编译时可做的优化通常都内置在编译器后端,也不需要外置分析器。
你如果只需要语法层面的分析,找lint工具就可以,但据我所知也很少,因为沒太大必要,Scheme很难用错。
总而言之我不觉得Scheme需要外置静态分析工具,事实上也几乎沒有。
Post by Chaos Eternal
主要也就是想纠错吧。
比如,发现类型错啊,死代码啊,什么的。
Post by Nala Ginrut
你要用来做什么?编码纠错?性能分析?形式化验证?安全检测?
静态分析是个很空泛的概念
Post by Chaos Eternal
谁能推荐个能用的scheme静态分析工具啊?
racket不算。
--
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling
我的GitHub主页:https://github.com/Liutos
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,请访问 https://groups.go
Liutos
2014-02-28 07:39:38 UTC
Permalink
这时候应该䟝靠的是完倇的backtrace啊【逃
比劂我最近就遇到䞀䞪python皋序执行的时候报类型䞍对。
䜆是报错的这䞪凜数是劂䜕收到这䞪错误类型的数据的完党没抂念啊。劂果胜有静态分析工具胜做类型检查就可以提高生产率嘛
Post by Liutos
感觉劚态类型语蚀的类型错误还是挺容易遇到的尀其圚䞀些凜数倄理后返回了䞀䞪倱莥情况䞋的倌的时候XD
Post by Nala Ginrut
倖眮工具应该埈少。
我只谈猖译型(解释型就别自扟麻烊了)。
銖先Scheme根本䞍䌚生成静态CFG(语蚀特性䞎实现无关)这意味着䞍倧可胜提前做䞀次控制流分析然后再正匏猖译。䜆这话䞍绝对(任䜕事情沟到continuation郜䞍再绝对)有䞀种解决方案叫k–CFA简单来诎就是利甚了CPS来实现CFA(control
Post by Liutos
Post by Nala Ginrut
flow analysis)。这䞪比蟃前沿了我反正没有见到成型的工具。
劚态类型语蚀䞀般䞍需芁关心类型错误(䞍是诎沒甚倄)䜜类型分析䞻芁是䞺了䌘化(给代码生成或内联展匀提䟛额倖参考)。
这种需求的话倖眮工具是沒倪倧价倌的䞀定芁基于具䜓猖译噚实现(包括利甚猖译噚钩子)。
dead code elimination, CSE等等猖译时可做的䌘化通垞郜内眮圚猖译噚后端也䞍需芁倖眮分析噚。
䜠劂果只需芁语法层面的分析扟lint工具就可以䜆据我所知也埈少因䞺沒倪倧必芁Scheme埈隟甚错。
总而蚀之我䞍觉埗Scheme需芁倖眮静态分析工具事实䞊也几乎沒有。
䞻芁也就是想纠错吧。
比劂发现类型错啊死代码啊什么的。
䜠芁甚来做什么猖码纠错性胜分析圢匏化验证安党检测
静态分析是䞪埈空泛的抂念
谁胜掚荐䞪胜甚的scheme静态分析工具啊
racket䞍算。
--
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling
我的GitHub䞻页https://github.com/Liutos
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub䞻页https://github.com/Liutos
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
Xiaofeng Yang
2014-02-28 09:08:40 UTC
Permalink
既然芁甚scheme,python这种问题就䞍可避免。即䜿甚静态分析工具去掚断类型埀埀䌚富臎曎糟糕的结果。
比劂我最近就遇到䞀䞪python皋序执行的时候报类型䞍对。
䜆是报错的这䞪凜数是劂䜕收到这䞪错误类型的数据的完党没抂念啊。劂果胜有静态分析工具胜做类型检查就可以提高生产率嘛
Post by Liutos
感觉劚态类型语蚀的类型错误还是挺容易遇到的尀其圚䞀些凜数倄理后返回了䞀䞪倱莥情况䞋的倌的时候XD
Post by Nala Ginrut
倖眮工具应该埈少。
我只谈猖译型(解释型就别自扟麻烊了)。
銖先Scheme根本䞍䌚生成静态CFG(语蚀特性䞎实现无关)这意味着䞍倧可胜提前做䞀次控制流分析然后再正匏猖译。䜆这话䞍绝对(任䜕事情沟到continuation郜䞍再绝对)有䞀种解决方案叫k–CFA简单来诎就是利甚了CPS来实现CFA(control
Post by Liutos
Post by Nala Ginrut
flow analysis)。这䞪比蟃前沿了我反正没有见到成型的工具。
劚态类型语蚀䞀般䞍需芁关心类型错误(䞍是诎沒甚倄)䜜类型分析䞻芁是䞺了䌘化(给代码生成或内联展匀提䟛额倖参考)。
这种需求的话倖眮工具是沒倪倧价倌的䞀定芁基于具䜓猖译噚实现(包括利甚猖译噚钩子)。
dead code elimination, CSE等等猖译时可做的䌘化通垞郜内眮圚猖译噚后端也䞍需芁倖眮分析噚。
䜠劂果只需芁语法层面的分析扟lint工具就可以䜆据我所知也埈少因䞺沒倪倧必芁Scheme埈隟甚错。
总而蚀之我䞍觉埗Scheme需芁倖眮静态分析工具事实䞊也几乎沒有。
䞻芁也就是想纠错吧。
比劂发现类型错啊死代码啊什么的。
䜠芁甚来做什么猖码纠错性胜分析圢匏化验证安党检测
静态分析是䞪埈空泛的抂念
谁胜掚荐䞪胜甚的scheme静态分析工具啊
racket䞍算。
--
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling
我的GitHub䞻页https://github.com/Liutos
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
Nala Ginrut
2014-02-28 10:23:50 UTC
Permalink
Post by Chaos Eternal
比如我最近就遇到一个python程序,执行的时候报类型不对。
但是报错的这个函数是如何收到这个错误类型的数据的,完全没概念啊。如果能有静态分析工具能做类型检查,就可以提高生产率嘛
说实话,程序在开始设计的时候没有订立规范或者根本没遵循规范(包括各种返回
值约定),而试图靠分析工具来事后解决,那都是不靠谱的。
虽然写一个Scheme的type checker并不难,但并不能解决你所说的问题——它甚至没
太大用处,除非你确实懒得手写检测代码。

比如这样(以下是伪代码):
(: func : integer -> integer) ; 类型声明
(define (func x) (and (> x 0) (1+ x)))
x不是整数的情况下返回#f是可以通过类型检查的,而x的值并不能保证在编译时就
确定,如果你有type checker反而导致问题复杂化。有人说运行时不是可以做检查
吗?那你愿意耽误这个功夫何不自己在代码里做检查呢?反正一样的低效。
如果做一些改进:
(: func : integer -> (integer || boolean))
那虽然能通过检测也能正常运行,但是根本就无法在出错的时候帮到你。

在我看来,在动态类型语言中限制类型只会使你碍手碍脚,因为动态类型就是允许
灵活设定返回值的。没有掌握动态类型应当如何利用的话,任何外部工具都是没办
法的。
还有一个方法是直接抛出异常,而不是返回false,这样就省去类型不匹配的麻
烦。
--
--
Lisp-cn(Lisp中文用户组)
CLUG http://lisp.org.cn

---
您收到此邮件是因为您订阅了 Google 网上论坛的“Lisp-cn(Lisp中文用户组)”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 lisp-cn+***@googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/g
Liutos
2014-03-01 02:38:53 UTC
Permalink
䞺Nala的观点点赞~\(≧▜≊)/~å•Šå•Šå•Š
比劂我最近就遇到䞀䞪python皋序执行的时候报类型䞍对。
䜆是报错的这䞪凜数是劂䜕收到这䞪错误类型的数据的完党没抂念啊。劂果胜有静态分析工具胜做类型检查就可以提高生产率嘛
诎实话皋序圚匀始讟计的时候没有订立规范或者根本没遵埪规范包括各种返回
倌纊定而试囟靠分析工具来事后解决那郜是䞍靠谱的。
虜然写䞀䞪Scheme的type checker并䞍隟䜆并䞍胜解决䜠所诎的问题——它甚至没
倪倧甚倄陀非䜠确实懒埗手写检测代码。
比劂这样(以䞋是䌪代码
(: func : integer -> integer) ; 类型声明
(define (func x) (and (> x 0) (1+ x)))
x䞍是敎数的情况䞋返回#f是可以通过类型检查的而x的倌并䞍胜保证圚猖译时就
确定劂果䜠有type checker反而富臎问题倍杂化。有人诎运行时䞍是可以做检查
吗那䜠愿意耜误这䞪功倫䜕䞍自己圚代码里做检查呢反正䞀样的䜎效。
劂果做䞀些改进
(: func : integer -> (integer || boolean))
那虜然胜通过检测也胜正垞运行䜆是根本就无法圚出错的时候垮到䜠。
圚我看来圚劚态类型语蚀䞭限制类型只䌚䜿䜠碍手碍脚因䞺劚态类型就是允讞
灵掻讟定返回倌的。没有掌握劚态类型应圓劂䜕利甚的话任䜕倖郚工具郜是没办
法的。
还有䞀䞪方法是盎接抛出匂垞而䞍是返回false这样就省去类型䞍匹配的麻
烊。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub䞻页https://github.com/Liutos
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
shenhua zhang
2014-03-01 07:12:58 UTC
Permalink
×ÐÏžµãŸÍ¿ÉÒÔÁË
ΪNalaµÄ¹ÛµãµãÔÞ£¡~\(šRšŒšQ)/~À²À²À²
±ÈÈçÎÒ×îœüŸÍÓöµœÒ»žöpython³ÌÐò£¬ÖŽÐеÄʱºò±šÀàÐͲ»¶Ô¡£
µ«ÊDZšŽíµÄÕâžöº¯ÊýÊÇÈçºÎÊÕµœÕâžöŽíÎóÀàÐ͵ÄÊýŸÝµÄ£¬ÍêȫûžÅÄî°¡¡£Èç¹ûÄÜÓП²Ì¬·ÖÎö¹€ŸßÄÜ×öÀàÐÍŒì²é£¬ŸÍ¿ÉÒÔÌážßÉú²úÂÊÂï
˵ʵ»°£¬³ÌÐòÔÚ¿ªÊŒÉèŒÆµÄʱºòûÓж©Á¢¹æ·¶»òÕßžù±ŸÃ»×ñÑ­¹æ·¶£š°üÀšž÷ÖÖ·µ»Ø
ÖµÔŒ¶š£©£¬¶øÊÔÍŒ¿¿·ÖÎö¹€ŸßÀŽÊºóœâŸö£¬ÄǶŒÊDz»¿¿Æ׵ġ£
ËäȻЎһžöSchemeµÄtype checker²¢²»ÄÑ£¬µ«²¢²»ÄÜœâŸöÄãËù˵µÄÎÊÌ⡪¡ªËüÉõÖÁû
Ì«ŽóÓÃŽŠ£¬³ý·ÇÄãȷʵÀÁµÃÊÖÐŽŒì²âŽúÂë¡£
±ÈÈçÕâÑù(ÒÔÏÂÊÇαŽúÂ룩£º
(: func : integer -> integer) ; ÀàÐÍÉùÃ÷
(define (func x) (and (> x 0) (1+ x)))
x²»ÊÇÕûÊýµÄÇé¿öÏ·µ»Ø#fÊÇ¿ÉÒÔÍš¹ýÀàÐÍŒì²éµÄ£¬¶øxµÄÖµ²¢²»Äܱ£Ö€ÔÚ±àÒëʱŸÍ
È·¶š£¬Èç¹ûÄãÓÐtype checker·Ž¶øµŒÖÂÎÊÌ➎ÔÓ»¯¡£ÓÐÈË˵ÔËÐÐʱ²»ÊÇ¿ÉÒÔ×öŒì²é
Âð£¿ÄÇÄãÔžÒâµ¢ÎóÕâžö¹Š·òºÎ²»×ÔŒºÔÚŽúÂëÀï×öŒì²éÄØ£¿·ŽÕýÒ»ÑùµÄµÍЧ¡£
Èç¹û×öһЩžÄœø£º
(: func : integer -> (integer || boolean))
ÄÇËäÈ»ÄÜÍš¹ýŒì²âÒ²ÄÜÕý³£ÔËÐУ¬µ«ÊÇžù±ŸŸÍÎÞ·šÔÚ³öŽíµÄʱºò°ïµœÄã¡£
ÔÚÎÒ¿ŽÀŽ£¬ÔÚ¶¯Ì¬ÀàÐÍÓïÑÔÖÐÏÞÖÆÀàÐÍÖ»»áʹÄã°­ÊÖ°­œÅ£¬ÒòΪ¶¯Ì¬ÀàÐÍŸÍÊÇÔÊÐí
Áé»îÉ趚·µ»ØÖµµÄ¡£Ã»ÓÐÕÆÎÕ¶¯Ì¬ÀàÐÍÓŠµ±ÈçºÎÀûÓõĻ°£¬ÈκÎÍⲿ¹€Ÿß¶ŒÊÇû°ì
·šµÄ¡£
»¹ÓÐÒ»žö·œ·šÊÇÖ±œÓÅ׳öÒì³££¬¶ø²»ÊÇ·µ»Øfalse£¬ÕâÑùŸÍÊ¡È¥ÀàÐͲ»Æ¥ÅäµÄÂé
·³¡£
--
--
Lisp-cn(LispÖÐÎÄÓû§×é)
CLUG http://lisp.org.cn
---
ÄúÊÕµœŽËÓÊŒþÊÇÒòΪÄú¶©ÔÄÁË Google ÍøÉÏÂÛ̳µÄ¡°Lisp-cn(LispÖÐÎÄÓû§×é)¡±ÂÛ̳¡£
Òª²é¿Žžü¶àÑ¡ÏÇë·ÃÎÊ https://groups.google.com/groups/opt_out¡£
--
Liutos Love Linux LaTeX Lisp Ling
ÎÒµÄGitHubÖ÷Ò³£ºhttps://github.com/Liutos
--
--
Lisp-cn(LispÖÐÎÄÓû§×é)
CLUG http://lisp.org.cn
---
ÄúÊÕµœŽËÓÊŒþÊÇÒòΪÄú¶©ÔÄÁË Google ÍøÉÏÂÛ̳µÄ¡°Lisp-cn(LispÖÐÎÄÓû§×é)¡±ÂÛ̳¡£
Òª²é¿Žžü¶àÑ¡ÏÇë·ÃÎÊ https://groups.google.com/groups/opt_out¡£
--
--
Lisp-cn(LispÖÐÎÄÓû§×é)
CLUG http://lisp.org.cn

---
ÄúÊÕµœŽËÓÊŒþÊÇÒòΪÄú¶©ÔÄÁË Google ÍøÉÏÂÛ̳µÄ¡°Lisp-cn(LispÖÐÎÄÓû§×é)¡±ÂÛ̳¡£
ÒªÍ˶©ŽËÂÛ̳²¢Í£Ö¹œÓÊÕŽËÂÛ̳µÄµç×ÓÓÊŒþ£¬Çë·¢Ë͵ç×ÓÓÊŒþµœ lisp-cn+***@googlegroups.com¡£
Òª²é¿Žžü¶àÑ¡ÏÇë·ÃÎÊ https://groups.google.com/groups/opt_out¡£
Xiaofeng Yang
2014-02-27 05:11:34 UTC
Permalink
是䞍是发现scheme倪容易写出有问题的代码了​

Best regards,
Xiaofeng Yang
谁胜掚荐䞪胜甚的scheme静态分析工具啊
racket䞍算。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn
---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
--
--
Lisp-cn(Lisp䞭文甚户组)
CLUG http://lisp.org.cn

---
悚收到歀邮件是因䞺悚订阅了 Google 眑䞊论坛的“Lisp-cn(Lisp䞭文甚户组)”论坛。
芁退订歀论坛并停止接收歀论坛的电子邮件请发送电子邮件到 lisp-cn+***@googlegroups.com。
芁查看曎倚选项请访问 https://groups.google.com/groups/opt_out。
Loading...