小编Eri*_*ric的帖子

Emacs Haskell Mode Flymake

我一直在努力让Flymake在emacs中使用Haskell模式.我已经让它在过去工作了,我不得不说Flymake和Haskell的类型系统的组合是非常协同的.现在看来我无法获得错误/警告突出显示并且一切正常.我试过ghc-mod,我也跟着一些wiki.请帮助,奖金,如果你可以使用cabal-dev.

GHC-7.4和GHC 7.0.Emacs 23.4.

emacs haskell flymake

12
推荐指数
1
解决办法
1683
查看次数

Emacs 自动滚动日志缓冲区

我正在看 Emacs 的开发日志。但是,每当我打开此日志时,它都会以基本模式打开,并且缓冲区不会随日志内容一起滚动。应该注意的是,这是一个非常小的日志,仅收集有关我在编写源代码时所犯错误的信息。我在 Emacs 中看到这一点非常方便,因为日志响应我在编辑器中输入的命令。如何获得与日志一起滚动的缓冲区?

emacs logging

6
推荐指数
1
解决办法
2007
查看次数

理解功能编程中的排序

我大多是一个实用的人,但我发现这很有趣.

我一直在考虑monadic测序,我需要澄清一些事情.所以冒这个听起来很傻的风险是:

monadic成员绑定

bind :: m b -> (b -> m c) -> m c

可以对"动作"进行排序,使您可以显式访问中间值.

这对我来说如何比分类成员更多(.):

(.) :: cat b c -> cat a b -> cat a c

有了这个,我可以排序并访问中间值.毕竟(f . g) x = f(g (x)).

bind如果我能按顺序排序,为什么需要测序(.)

haskell functional-programming category-theory

6
推荐指数
1
解决办法
972
查看次数

使用Data.Cereal或Data.Binary序列化String

我正在实现一个协议,该协议规定表示密码的字符串应序列化为固定长度的10字节字段.我正在使用Data.Cereal来执行此任务.这是我最近的一次:

padText :: Int -> Text -> Text
padText fieldLen = T.justifyLeft fieldLen '\NUL'

putPassword :: Putter Password
putPassword = put . TE.encodeUtf8 . padText 10
Run Code Online (Sandbox Code Playgroud)

在ByteStrings上加上一个额外的8字节块,在它编码的前面加上:

 runPut $ putPassword "Friend"
Run Code Online (Sandbox Code Playgroud)

造成 :

"\NUL\NUL\NUL\NUL\NUL\NUL\NUL\nFriend\NUL\NUL\NUL\NUL"
Run Code Online (Sandbox Code Playgroud)

我不想要额外的块.为什么这样表现?

有谁知道如何序列化只有10个原始字节?

haskell

5
推荐指数
1
解决办法
793
查看次数

简单的发电机

此代码来自一篇名为"Lazy v.Permal"的论文.它是一种解耦数据流的生产者和消费者的方法.我理解代码的Haskell部分,但O'Caml/F#让我不知所措.由于以下原因,我不理解此代码:

对于将参数作为参数作为异常并返回单位的函数,我可以期待什么样的行为?

消费者如何投射到特定的例外?(那是什么意思?)

什么是消费者的例子?

module SimpleGenerators

type 'a gen        = unit -> 'a
type producer      = unit gen
type consumer      = exn -> unit  (* consumer will project into specific exception *)
type 'a transducer = 'a gen -> 'a gen 

let yield_handler : (exn -> unit) ref = 
    ref (fun _ -> failwith "yield handler is not set")

let iterate (gen : producer) (consumer : consumer) : unit = 
    let oldh = !yield_handler in
    let rec …
Run Code Online (Sandbox Code Playgroud)

f# ocaml haskell yield iterate

5
推荐指数
1
解决办法
368
查看次数

参数多态性与亚型多态性F#

这两个F#类型签名之间有什么区别(如果有的话)?

UseTheStream<'a when 'a :> Stream> : 'a -> unit
Run Code Online (Sandbox Code Playgroud)

UseTheStream : (stream : Stream) -> unit
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它们的意思是一样的吗?

msdn说出以下关于(:>)类型约束的内容

type-parameter :> type --   The provided type must be equal to or derived from the type      specified, or, if the type is an interface, the provided type must implement the interface.
Run Code Online (Sandbox Code Playgroud)

这表明两个签名正在说同样的话.从功能上来说,它们有何不同?

inheritance f# functional-programming subtyping parametric-polymorphism

2
推荐指数
1
解决办法
1284
查看次数