我正在尝试编写一个必须操纵剪贴板的Emacs脚本(只需获取最后一个条目并将其作为字符串进行操作).问题是我在Linux(在家里)和Windows(在工作中)工作.在Windows中,我必须使用的函数(W32-获取剪贴板数据),而Linux使用(X-获取剪贴板)为同样的目的(每个OS有益的错误了,当你使用其他人的同等功能).
我真的不想保留两个具有相同模式定义的单独文件; 有没有办法通过elisp检查当前正在运行的OS Emacs,所以我可以使用相应的功能?
PS.是的,一个合理的解决方案是"停止在工作中使用Windows",我正在努力,但我还是需要忍受至少一两个月的事情.
我正在寻找类型的功能
[[(a, b)]] -> [(a, [b])]
并且Hoogle告诉我没有一个,所以我写了这个:
transpose :: (Eq a) => [[(a, b)]] -> [(a, [b])]
transpose alists = uncurry zip $ foldl combine ([], []) alists
where combine memo new = foldl tally memo new
tally ([], []) (k, v) = ([k], [[v]])
tally ((ksHead:ksRest), (vsHead:vsRest)) (k, v) =
if k == ksHead
then (ksHead:ksRest, (v:vsHead):vsRest)
else (ksHead:ks, vsHead:vs)
where (ks, vs) = tally (ksRest, vsRest) (k, v)
Run Code Online (Sandbox Code Playgroud)
按重要性排序:
transpose这个东西是正确的名字吗?编辑
因为有人对这种味道感兴趣:
我正在写一个堆栈排名应用程序,来自用户的选票以形式出现 …
这个的后续。
我得到了阅读/解码工作
1> {ok, F} = file:read_file("inaimathi.rsapub").
{ok,<<"-----BEGIN RSA PUBLIC KEY-----\nmQINBE9NBIQBEADMSzN6b0FaPP0rGiLDWKfH4ehN66Z0SAIynXm6lBHjmO69pNsm\niIe4p1X9aXhr"...>>}
2> [Entry] = public_key:pem_decode(F).
[{'RSAPublicKey',<<153,2,13,4,79,77,4,132,1,16,0,204,75,
51,122,111,65,90,60,253,43,26,34,195,
88,167,...>>,
not_encrypted}]
Run Code Online (Sandbox Code Playgroud)
根据文档,为了从中获取可用的公钥,我必须做的最后一件事就是在其public_key:pem_entry_decode/1上运行Entry。但是,当我尝试这样做时,会出现错误。
3> public_key:pem_entry_decode(Entry).
** exception error: no match of right hand side value
{error,
{asn1,
{{badmatch,{error,{asn1,{wrong_tag,{131097,16}}}}},
[{'OTP-PUB-KEY',dec_RSAPublicKey,2,
[{file,"OTP-PUB-KEY.erl"},{line,5956}]},
{'OTP-PUB-KEY',decode,2,
[{file,"OTP-PUB-KEY.erl"},{line,493}]},
{public_key,der_decode,2,
[{file,"public_key.erl"},{line,166}]},
{erl_eval,do_apply,6,
[{file,"erl_eval.erl"},{line,576}]},
{shell,exprs,7,[{file,"shell.erl"},{line,668}]},
{shell,eval_exprs,7,
[{file,"shell.erl"},{line,623}]},
{shell,eval_loop,3,
[{file,"shell.erl"},{line,608}]}]}}}
in function public_key:der_decode/2 (public_key.erl, line 170)
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
编辑:不认为这很重要,但有人问,所以。
我在酷睿i3运行Debian喘息从的〜2日龄结账安装二郎此。
erl --version 说
Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]
Run Code Online (Sandbox Code Playgroud) 您可以在ASDF系统中设置的其他内容是:version属性.有没有办法在运行时读取它?有点像(system-version :my-system-name)?
我知道有asdf:version-satisfies和asdf:asdf-version,但也做我想做的在这种情况下.
我正在使用emacs前奏,我无法关闭guru-mode.它在文档中说,这可以通过设置来实现(guru-mode -1).我把这个设置放在了my-init.el,但它仍然不起作用.
任何帮助将不胜感激.
高级问题:如何functor在SML中将s与多个参数一起使用?
我看这个,这个,这个和这个(PDF) 。所有这些似乎冲突的条款structure或functor定义语法,其中没有显示出比一元以外的任何其他functor。
细节:我想写的标准ML(你可以看到努力的web服务器在这里),并已决定将其划分成BUFFER,PARSER和TCPSERVER块。在BUFFER和PARSER都只是简单structure秒。使用的想法TCPSERVER是,它处理侦听/接受逻辑,但允许用户通过传递其他两个来指定适当的缓冲/解析策略。
signature TCPSERVER =
sig
type SockAction
type Request
val serve : int -> (Request -> (INetSock.inet,Socket.active Socket.stream) Socket.sock -> SockAction) -> 'u
end
functor Server (Buf : BUFFER) (Par : PARSER) : TCPSERVER =
struct
type Request = Par.Request
datatype SockAction = …Run Code Online (Sandbox Code Playgroud)