我看了这个:
http://hackage.haskell.org/trac/ghc/wiki/ViewPatterns
我喜欢这个想法,想要使用扩展名.但是我想确定一件事:是否对单个匹配评估了一次视图函数.
所以我们说:
{-# LANGUAGE ViewPatterns #-}
...
f (view -> Nothing) = ...
f (view -> Just x) = ...
view :: a -> Maybe b
Run Code Online (Sandbox Code Playgroud)
现在让我说我调用f a.view对于给定的参数,是调用两次还是只调用一次a?
编辑:
我试图找出是否是这种情况并写下以下内容:
{-# LANGUAGE ViewPatterns #-}
import System.IO.Unsafe
blah (ble -> Nothing) = 123
blah (ble -> Just x) = x
ble x = unsafePerformIO $ do
putStrLn $ "Inside ble: " ++ show x
return x
main :: IO ()
main = …Run Code Online (Sandbox Code Playgroud) 我想了解使用"FOR UPDATE"与"JOIN"相关的确切语义.它是否只锁定了有效用于构建最终结果的所有行?它还能做些什么吗?
从这个主题:
http://postgresql.1045698.n5.nabble.com/Select-For-Update-and-Left-Outer-Join-td4363154.html
我知道数据库实现之间存在一些重要的差异.但是我不确定.我对任何流行的RDBMS的行为感兴趣,特别是PostgreSQL.
我一直在测试我制作的缓存系统.其目的是加速Django Web应用程序.它将所有内容存储在内存中.根据cProfile,在我的测试中大部分时间都花在QuerySet._clone()中,结果证明效率非常低(实际上并没有那么奇怪).
我非常希望使用PyPy来加快速度.我有一台64位机器.然而,在安装了所有必需的库之后,事实证明PyPy编译的代码运行速度比常规Python代码慢2.5倍,我不知道该怎么做.代码是CPU绑定的(绝对没有数据库查询,因此IO边界不是一个选项).单个测试运行大约10秒,所以我想JIT应该足够了.我正在使用PyPy 1.5.一个注意事项 - 我自己没有编译源代码,只下载了一个64位的linux版本.
我想知道CPU密集型代码在PyPy下实际运行速度有多快.希望我能做些什么错误会阻止PyPy运行到最佳状态.
编辑
精确的cPython输出:
PyPy 1.5:
3439146 function calls (3218654 primitive calls) in 19.094 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
2/1 0.000 0.000 18.956 18.956 <string>:1(<module>)
2/1 0.000 0.000 18.956 18.956 /path/to/my/project/common/integrity/models/transactions.py:200(newfn)
2/1 0.000 0.000 18.956 18.956 /path/to/my/project/common/integrity/models/transactions.py:134(recur)
2/1 0.000 0.000 18.956 18.956 /usr/local/pypy/site-packages/django/db/transaction.py:210(inner)
2/1 0.172 0.086 18.899 18.899 /path/to/my/project/common/integrity/tests/optimization.py:369(func_cached)
9990 0.122 0.000 18.632 0.002 /usr/local/pypy/site-packages/django/db/models/manager.py:131(get)
9990 0.127 0.000 16.638 0.002 /path/to/my/project/common/integrity/models/cache.py:1068(get)
9990 0.073 0.000 12.478 0.001 /usr/local/pypy/site-packages/django/db/models/query.py:547(filter)
9990 0.263 …Run Code Online (Sandbox Code Playgroud) 我疯狂地搜索了互联网,但是"WTP冻结"或"Eclipse冻结"产生了许多不同的结果,几乎不可能找到合适的结果.我有以下问题.
在HTML或CSS编辑器中,当我意外地将鼠标悬停在属性值上时,Eclipse会在CPU加载100%时挂起3-4秒,然后生成一个工具提示消息,其中包含有关标记及其属性的一些信息.我不需要那些提示.天哪,我甚至不需要语法着色,如果这会阻止我这个挂起.
我尝试禁用所有自动完成功能,看似相关的所有内容,但这并没有改变一点.我找了一个设置来完全禁用WTP而不卸载它,但是再次 - 没有运气.
我使用Eclipse Helios.我有所有最新的插件.如果需要,我会提供任何其他信息.
有没有人有类似的问题,能够解决它?这真让我疯狂.
BOUNTY
赏金将发送给任何找到方法或解决方法的人,这将使弹出窗口合理快速.我在Eclipse的许多地方遇到过这个问题 - 例如PyDev:
我有强烈的程序感觉,这是弹出窗口的一般问题,而不是WTP/PyDev.以下是我已采取的措施:
我的设置是Ubuntu Natty,Oracle Java 1.6 - repos中的最新版本
进一步发现
好吧,我刚刚发现99%的冻结时间花在了一个org.eclipse.swt.internal.gtk.OS._gtk_widget_realize似乎不对的电话里面.有线索吗?
我鼓励所有遇到过这个问题的人在Eclipse bug跟踪器上投票支持这个bug.
是否有人能够testLookups()在此代码段中解释评论?
我运行代码,确实评论sais是真的.但是我想理解为什么它是真的,即为什么cPickle根据它的引用方式为同一个对象输出不同的值.
它与引用计数有什么关系吗?如果是这样,那不是某种错误 - 即腌制和反序列化的对象会有异常高的引用计数,实际上永远不会收集垃圾?
当我想测试纯代码时,QuickCheck我经常要写一个Arbitrary实例.要测试monadic代码,我可以Test.QuickCheck.Monadic按照本文所述使用.
我的问题是:是否有一些规范的方法来生成依赖于monadic上下文的数据?特别是,有任何monadic版本的任意?您将如何生成需要monadic上下文的数据?
我在Ubuntu下使用Eclipse Helios.
每当我在/usr/local/lib/python2.6/dist-packages/使用下安装一个新库时pip,Eclipse都没有看到它并抱怨无效的导入.我仔细检查了库是否到位.导入它的工作原理是解释器.刷新PyDev配置或重新启动IDE不起作用.注意:提到的路径位于Python解释器选项卡中的库路径列表中.
有没有人知道对此的补救措施,如果不知道如何追查实际原因.
我目前正在处理一段由其他人编写的代码.它用于httplib向服务器发出请求.它以正确的格式提供所有数据 - 例如消息正文,标题值等.
问题是,每次尝试发送POST请求时,数据都在那里 - 我可以在客户端看到它,但是没有任何东西到达服务器.我已经阅读了库规范,其用法似乎是正确的.
提取的库调用如下:
import httplib
conn = httplib.HTTPConnection('monkeylabs.pl', 80)
conn.connect()
request = conn.putrequest('POST', '/api/snippet/')
headers = {}
headers['Content-Type'] = 'application/json'
headers['User-Agent'] = 'Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) Resig/20070309 PilotFish/1.3.pre03'
headers['Accept'] = '*/*'
for k in headers:
conn.putheader(k, headers[k])
conn.endheaders()
conn.send('[{"id":"route"}]')
resp = conn.getresponse()
print resp.status
print resp.reason
print resp.read()
conn.close()
Run Code Online (Sandbox Code Playgroud)
这是一个已知问题,还是什么?我正在使用Python 2.7.不知道如何检查httplib的版本.
请不要建议将httplib替换为其他内容,除非它的内容非常相似(也许是httplib2).正如我所说的那样,代码不是我的代码,它的数量远远超过我刚刚发布的代码.重构它会导致一个重大问题.我对任何可靠的解决方法感兴趣.
编辑
调试输出:
send: 'POST /api/snippet/ HTTP/1.1\r\nHost: monkeylabs.pl\r\nAccept-Encoding: identity\r\nContent-Type: application/json\r\nAccept: */*\r\nUser-Agent: Envjs/1.618 (SpyderMonkey; U; Linux x86_64 2.6.38-10-generic; pl_PL.utf8; rv:2.7.1) …Run Code Online (Sandbox Code Playgroud) 我在Eclipse中使用PyDev作为我的Python编辑器.它在功能集方面很好.一切都很好,除了一个非常烦人的事情:
代码完成本身很快.当我按下Alt + Space时,窗口几乎立即弹出,所有选项都在那里.选中顶部的选项.然后麻烦了.详细描述直到约5-10秒才出现.所有这些时间CPU都在最大负载下工作,并且接口没有响应.所有处理器都被Eclipse Java进程占用(生成的Python进程似乎空闲).然后弹出一个黄色窗口,它包含的只是所选函数/变量的Python代码.所有连续细节都会立即显示.当我关闭完成窗口时(例如,通过接受其中一个选项并再次要求完成),该过程重复进行.这让我发疯了.
我到目前为止尝试过:
我使用的版本是Eclipse Helios,因为我上次检查某些扩展时尚未移植到最新版本.
有没有人观察过类似的问题?有人能绕过它吗?有关如何调试它并提交合理的错误报告的一般想法可能吗?其他值得检查的东西.
任何解决方法都不如完全关闭完成?
谢谢!
编辑:
我也注意到HTML/CSS编辑器中类似弹出窗口的问题.它看起来有点相似(一个黄色的窗口,里面有一些文字),它也需要很长时间才能显示出来.不知道这是否相关,但可能是.
EDIT(2):
好吧,不,我已经开始全新安装最新的Eclipse Indigo,除了PyDev之外没有任何额外的插件,问题仍然存在.好像我必须寻找新的IDE.
是否有接受类型定义或最好是各种语句的Haskell解释器?
我已经尝试了ghci,hugs而且这些都没有.有什么特别的原因,这很难/不可能吗?
python ×4
eclipse ×3
haskell ×3
autocomplete ×1
cprofile ×1
database ×1
eclipse-wtp ×1
editor ×1
envjs ×1
freeze ×1
ghc ×1
ghci ×1
hang ×1
html ×1
http ×1
httpclient ×1
httplib ×1
hugs ×1
import ×1
interpreter ×1
jit ×1
locking ×1
monads ×1
optimization ×1
path ×1
performance ×1
pickle ×1
postgresql ×1
pydev ×1
pypy ×1
quickcheck ×1
sql ×1
testing ×1