小编Mas*_*sse的帖子

基于Vim语法的PHP折叠

我已经下载了php.vim文件,其中包含基于PHP的语法信息.它应该能够提供基于语法的折叠,但由于某些原因我无法使其工作.

我已:let g:php_folding 2:set foldmethod=syntax但无济于事.我很确定文件是在正确的位置并由vim读取,因为我可以做:let g:php_sql_query=1哪些工作.

php.vim文件位于~/.vim/syntax/php.vim

php syntax vim folding

9
推荐指数
2
解决办法
8121
查看次数

用于数据库抽象的Idiomatic haskell

在OOP语言我可以写一个数据库的包装,它封装数据库连接,管理模式,并提供一些核心业务,如exec,query,prepare_and_execute.我甚至可能有一个单独的数据库助手类来处理数据库模式,只留下数据库抽象来处理连接.然后,模型包装器/工厂将使用它,它使用数据库抽象类来创建模型类的实例.像这个UML图一样的东西:

在惯用的haskell中设计这样一个系统的首选方法是什么?

database haskell

9
推荐指数
1
解决办法
1058
查看次数

消化函数复选框列表

如何使用消化函数创建一个具有以编程方式生成的复选框列表的表单,该表单将返回一个列表.例如:

[x] Milk
[ ] Cereals
[x] Ground meat
Run Code Online (Sandbox Code Playgroud)

会回来的["Milk", "Ground meat"].

我期待类型会是这样的:

form :: (Functor m, Monad m) => [String] -> HappstackForm m Html BlazeFormHtml [String]
Run Code Online (Sandbox Code Playgroud)

haskell digestive-functors

9
推荐指数
1
解决办法
600
查看次数

验证跨越多个字段

我正在尝试使用应用程序表单,我一直在想如何实现一个验证依赖于其他字段的字段的表单.例如,注册表单有passwordconfirm_password字段,我想验证password == confirm_password.

我可以在表单运行后在处理程序中完成,但这意味着丢失错误消息.

编辑:忘了提,我主要使用Yesods的应用形式,但它们似乎非常接近消化函数

haskell yesod digestive-functors

7
推荐指数
1
解决办法
302
查看次数

使用reactive-banana-wx输入UI

在使用反应性香蕉时,如何获得ui元素的内容?event0返回一个类型的事件Event (),它具有单位类型而不是控件的类型.event1接受类型的事件Event w (a -> IO ()),但命令是类型的Event w (IO ()).mapAccumE和mapAccumB将纯函数作为参数,因此get text foo不能与它们一起使用.

haskell reactive-programming reactive-banana

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

Leiningen uberjar"空"运行时间

在使用leiningen创建一个uberjar之后,运行该java -jar foo-uberjar.jar程序的jar 运行正常,最后一行代码执行得非常快,但程序在关闭之前会挂起大约一分钟.这是什么原因?

(ns redditwallpaper.core
  (:gen-class)
  (:require [clojure.contrib.duck-streams :as duck]
            [clojure.java [io :as io] [shell :as shell]]
            [clojure.string :as string]
            [clojure.contrib.json :as json])
  (:import (java.util Random)))

(defn filename [uri]
  (last (string/split uri #"/")))
(defn over_18 [x]
  (:over_18 x))
(defn posts [x]
  (map :data (get-in x [:data :children])))
(defn plain-image [x]
  (re-find #"(.jpg|.png)$" (:url x)))
(def url "http://www.reddit.com/r/wallpaper.json")
(def wallpaperjson (json/read-json (slurp url)))
(defn copy [uri fname]
  (with-open [in (io/input-stream uri)
              out (io/output-stream fname)]
    (.write out (duck/to-byte-array in)))) …
Run Code Online (Sandbox Code Playgroud)

clojure

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

深可能与yesod堆叠

我正在尝试设置一个授权方案,我检查1.用户登录2.用户可以访问某个对象.为此,我首先调用maybeAuthId,然后尝试获取当前对象,并"加入"另一个列出权限的表.有两个级别的可能案例和一个级别的空列表案例.我想过使用MaybeT,但要么我太累了要让它工作,要么"不是真正的monad变换器"-handler-transformers不能和MaybeT一起使用.有没有一种很好的方式来处理深深的maybes?

编辑:

看起来我有点不清楚.我的意思是我有这样的事情:

case foo of
   Nothing -> something
   Just foo' -> do
      bar <- somethingelse
      case bar of
         Nothing -> ...
         Just bar' -> ...
Run Code Online (Sandbox Code Playgroud)

haskell yesod

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

读取文件时限制内存使用量

我是Haskell的初学者,并认为这将是一个很好的锻炼.我有一个分配,我需要在线程A中读取文件,处理线程B_i中的文件行,然后在线程C中输出结果.

我已经实现了这一点,但其中一个要求是我们不能相信整个文件适合内存.我希望懒惰的IO和垃圾收集器能为我做到这一点,但唉,内存使用量不断上升和上升.

读者线程(A)读取文件,readFile然后用行号压缩并用Just包装.然后写入这些压缩的行Control.Concurrent.Chan.每个消费者线程B都有自己的渠道.

每个消费者在有数据时读取他们自己的频道,如果正则表达式匹配,则将其输出到包含在Maybe(由列表组成)中的各自的输出通道.

打印机检查每个B线程的输出通道.如果结果(行)都不是Nothing,则打印该行.因为在这一点上应该没有引用较旧的行,我认为垃圾收集器能够释放这些行,但是我似乎在这里错了.

.lhs文件位于:http://gitorious.org/hajautettujen-sovellusten-muodostamistekniikat/hajautettujen-sovellusten-muodostamistekniikat/blobs/master/mgrep.lhs

所以问题是,我如何限制内存使用,或允许垃圾收集器删除行.

根据要求提供的片段.希望缩进不会被严重破坏:)

data Global = Global {done :: MVar Bool, consumers :: Consumers}
type Done = Bool
type Linenum = Int
type Line = (Linenum, Maybe String)
type Output = MVar [Line]
type Input = Chan Line
type Consumers = MVar (M.Map ThreadId (Done, (Input, Output)))
type State a = ReaderT Global IO a


producer :: [Input] -> FilePath -> State ()
producer c p = do
  liftIO …
Run Code Online (Sandbox Code Playgroud)

io concurrency haskell heap-memory

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

b树的顺序

我正在读考试,然后来到B树上.维基百科将B树描述为树,其中节点具有至少d且最多2d的密钥,因此最多2d + 1叶.例如,如果d = 1,它将有最多2个键和3个子项,使其成为2-3树.然而,除非我弄错,否则这不允许例如2-3-4树.

然而,我们的材料将b树描述为树,其中每个节点至少具有t> = 2 t-1个密钥和至多2t-1个密钥.这意味着节点具有奇数个键和偶数个子节点.例如,t = 2将具有1到3个键,最多4个子项,使其成为2-3-4树.另一方面,这种符号不可能有2-3棵树.

除此之外,Knuth还有一个符号,其中d表示节点中的最大子节点数.这种表示法允许偶数和奇数的孩子,允许2-3棵树和2-3-4棵树.

我知道2-3棵树和2-3-4棵树都存在.

什么是真正的符号?有真正的符号吗?作为一个额外的问题; 什么是大小为h的树中的最大键数?

tree b-tree data-structures

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

呼叫/ CC与闭包

维基百科提到"在任何支持闭包和正确尾调用的语言中,都可以用延续传递方式编写程序并手动实现调用/ cc."

如何在例如javascript中实现此功能?我知道javascript不做tco,但假设堆栈空间没有用完

javascript callcc

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