我觉得答案是肯定的,而且不仅限于Haskell.例如,尾调用优化将内存需求从O(n)改为O(l),对吧?
我确切关注的是:在Haskell上下文中,在推理程序的性能和大小时,有什么期望理解编译器优化?
在Scheme中,您可以将一些优化视为理所当然,例如TCO,因为您使用的是符合规范的解释器/编译器.
在ghci:
?> :t (pure 1)
(pure 1) :: (Applicative f, Num a) => f a
?> show (pure 1)
<interactive>:1:1:
No instance for (Show (f0 a0))
arising from a use of `show'
Possible fix: add an instance declaration for (Show (f0 a0))
In the expression: show (pure 1)
In an equation for `it': it = show (pure 1)
?> pure 1
1
Run Code Online (Sandbox Code Playgroud)
这是否意味着ghci执行Applicative并显示结果,就像IO
?
请注意,pure ()
并且pure (+1)
不打印任何内容.
是否可以使用Checkstyle禁止使用某些构造函数或使用系统相关默认值(locale,charset等等)的方法.我更喜欢强制执行一个策略,程序员应该明确系统相关的值.所以我认为以下项目是危险的:
java.io.FielWriter
OutputStreamWriter(OutputStream os)
构造函数java.io.OutputStreamWriter
java.lang.String.toLowerCase()
方法
java.util.Calendar.getInstance()
方法
(列表继续,你得到的图片).
是否可以使用Checkstyle 5.5强制执行此操作?
在尝试学习Haskell时,出现的困难之一就是当某些东西需要来自编译器的特殊魔法时.记住的一个例子是seq
无法定义的函数,即你不能使seq2
函数的行为与内置函数完全相同seq
.因此,在教某人时seq
,你需要提到的seq
是特殊的,因为它是编译器的特殊符号.
另一个例子是do
-notation,它只适用于Monad
类的实例.
有时,它并不总是显而易见的.例如,延续.编译器是否知道Control.Monad.Cont
或者您可能是自己发明的普通的Haskell?在这种情况下,我认为即使延续是一种非常奇怪的野兽,编译器也不需要特殊的东西.
语言扩展被搁置,其他编译器魔术Haskell学习者应该注意什么?
有没有办法在调用时指定要用于全局的对象eval()
?
(我不是问如何做全局eval().)
这不起作用,但这说明了我想要的:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
Run Code Online (Sandbox Code Playgroud)
关键是真正的全局绑定不受代码eval()'ed中的隐式变量声明(即没有var关键字)的影响.
至于eval.call(pseudoGlobal, "x=12")
或eval.apply(pseudoGlobal, ["x=12"])
,一些口译员不会允许它.
服务器端会话不是Snap Framework的一部分.有没有办法添加某种服务器端状态?
让我假装我想为每个HTTP请求增加一个计数器.我该怎么办?
我将使用Java(不带PBX)开发一个在线IVR应用程序.在软件需求中,我更喜欢在Java端实现一些数学计算和数据库通信.
如您所知,不同的技术已经准备好与Java集成,例如JTAPI,Zanzibar OpenIVR,Moho,VoiceXML,CCXML,Jive,Prophecy,Voicent,Voxeo等.
现在的问题是:什么是最好的解决方案?哪一个最容易达到?哪一个效率最高?你推荐开源框架吗?是否有用于处理IVR系统的Windows API?
在阅读了Anthony对样式相关解析器问题的回应之后,我试图说服自己编写monadic解析器仍然可以相当紧凑.
而不是
reference :: Parser Transc
reference = try $ do string "#{"
a <- number
char ','
b <- number
char ','
c <- number
char '}'
return $ Outside (a,b,c)
Run Code Online (Sandbox Code Playgroud)
我们可以简单地:
reference3 :: Parser Transc
reference3 = liftM3 (((Outside .).) . (,,))
(string "#{" >> number <<! char ',')
number
(char ',' >> number <<! char '}') where
(<<!) = liftM2 const
Run Code Online (Sandbox Code Playgroud)
这与Anthony提供的应用版非常相似:
reference2 :: Parser Transc
reference2 = ((Outside .) …
Run Code Online (Sandbox Code Playgroud) 昨天,我已经下载并安装了WAS v7的免费试用版.我下载的版本是,7.0.0.9
但我需要证明我的申请7.0.0.3
.
我在哪里可以买到这个版本?
更新:事实证明,我真正需要的是WebSphere Application Server for Developpers
它的工作原理!
haskell ×5
applicative ×2
ghc ×2
java ×2
monads ×2
ccxml ×1
checkstyle ×1
coding-style ×1
eval ×1
ghci ×1
global ×1
ivr ×1
javascript ×1
jtapi ×1
parsec ×1
voicexml ×1
websphere ×1
websphere-7 ×1