小编non*_*ont的帖子

如何登录Haskell?

我正在尝试使用HSlogger获取有关我的程序的一些信息.所以我在我的函数中添加以下行

import Data.Word
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Data.Bits
import Data.Int
import Data.ByteString.Parser

import System.Log.Logger
import System.Log.Handler.Syslog


importFile :: FilePath -> IO (Either String (PESFile ))
importFile n = do
     warningM "MyApp.Component2" "Something Bad is about to happen."
     ...
Run Code Online (Sandbox Code Playgroud)

这很好,因为函数在IO内部.但是,当我向以下函数添加类似的行时:

...
parsePES :: Parser PESFile
parsePES = do
        header <- string "#PES"
        warningM "parsing header"
        ...
        return (PESFile ...)
Run Code Online (Sandbox Code Playgroud)

我收到类型错误:

 Couldn't match expected type `Parser a0'
                with actual type `String -> IO ()'
    In …
Run Code Online (Sandbox Code Playgroud)

monads logging haskell

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

点免费代码更有效率,还是只是更简洁?

我编写了以下代码,它使用光泽库获取了一堆点并在屏幕上绘制它们.

let s = blocks pes
    pts = map (map mkPt) s  {- stitches to points-}
    lines = map Line pts    {-points to lines -}
    pict = Pictures lines   {- lines to a picture -}
  in do  displayInWindow "My Window" (200, 200) (10, 10) white pict
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我发现有一个重复的模式:一个函数调用链,每个函数调用的结果进入下一个参数的最后一个参数.所以我通过删除中间变量,反转顺序并使用函数组合(".")链接函数来重构,如下所示:

let pict = Pictures . (map Line) . (map $ map $ mkPt) . blocks $ pes
                in do  displayInWindow "My Window" (200, 200) (10, 10) white pict
Run Code Online (Sandbox Code Playgroud)

令人高兴的是,这也很好.但是我想知道我是否会降低可读性,或者我是不是习惯于阅读和编写点免费样式代码.另外,我如何推理这段代码?第二个版本更有效率,还是仅仅更高效?有什么我可以风格化的做法让它更清晰吗?

refactoring haskell coding-style pointfree

25
推荐指数
1
解决办法
1245
查看次数

在xcode6 gold master中,使用objc_msgSend现在抛出语法错误,说明参数的数量是错误的

 id<MyProtocol> topLayoutGuideObj = objc_msgSend(viewController, @selector(myselector));
Run Code Online (Sandbox Code Playgroud)

"函数调用的参数太多,预期为0,有2个"

但是,objc_msgSend的函数签名如下所示:

#if !OBJC_OLD_DISPATCH_PROTOTYPES
OBJC_EXPORT void objc_msgSend(void /* id self, SEL op, ... */ )
    __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT void objc_msgSendSuper(void /* struct objc_super *super, SEL op, ... */ )
    __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
#else
/** 
 * Sends a message with a simple return value to an instance of a class.
 * 
 * @param self A pointer to the instance of the class that is to receive the message.
 * @param op The selector of the method that …
Run Code Online (Sandbox Code Playgroud)

ios xcode6

17
推荐指数
2
解决办法
6339
查看次数

如何让haskell输出数字而不是科学记数法?

我有一些项目要分区为多个桶,这样每个桶比最后一个桶大一些.

items = 500
chunks = 5
increment = 0.20


{- find the proportions  -}
sizes = take chunks (iterate (+increment) 1)    
base = sum sizes / items    
buckets = map (base *) sizes

main = print buckets
Run Code Online (Sandbox Code Playgroud)

我确信有一种数学上更优雅的方式来做到这一点,但这不是我的问题.最后一步始终以科学记数法打印出来.

如何获得纯十进制输出?我看过Numeric包,但是我的速度很快.

formatting haskell scientific-notation

16
推荐指数
2
解决办法
3660
查看次数

Data.Sequence与Data.DList,用于将数据附加到列表的末尾

我正在编写一些需要经常附加到列表末尾的代码.我知道使用"++"是低效的.因此,我通过附加到头部向后构建列表,然后在完成后反转它.我认为这是一个常见的初学者策略.

我宁愿以正确的顺序构建它 - 但这意味着切换到新的数据结构.我正在考虑为我的容器使用Data.Sequence或Data.DList.我的列表由严格的int对组成,我不需要随机访问它.Data.Sequence和Data.DList有什么相对优点,还有其他容器我应该考虑吗?

haskell list append

11
推荐指数
1
解决办法
1465
查看次数

ghc找不到我的cabal安装包

我已经安装了ghc 6.12.3,然后安装了Haskell平台.我正在尝试编译测试程序:

$ ghc test.hs
test.hs:3:0:
    Failed to load interface for `Bindings':
      Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

所以,我自然而然

cabal install Bindings
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,并将包放在〜/ .cabal/lib/bindings-0.1.2问题是,当我再次使用ghc编译时,它仍然找不到我用cabal安装的软件包.在详细模式下编译给出:

ghc -v test.hs
Using binary package database: /home/ludflu/ghc/lib/ghc-6.12.3/package.conf.d/package.cache
Using binary package database: /home/ludflu/.ghc/x86_64-linux 6.12.3/package.conf.d/package.cache
Run Code Online (Sandbox Code Playgroud)

正如另一个stackoverflow用户所建议的,我尝试过:

ghc-pkg describe rts > rts.pkg
vi rts.pkg                      # add the /home/ludflu/.cabal/lib to `library-dirs` field
ghc-pkg update rts.pkg
Run Code Online (Sandbox Code Playgroud)

但无济于事.如何将.cabal添加到要搜索的包目录列表中?谢谢!

haskell cabal

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

什么是领先的XSL-FO实现?我如何在其中做出决定?

我正在评估PDF渲染技术.XSL-FO是我们选择的路径,因为它是一个开放标准,我们的源数据是XML.人们对XSL-FO的各种实现有什么经验?

到目前为止我发现的实现是:

我用来评估的标准是:性能,稳定性,可支持性,价格,模板管理工具.同样重要的是:良好的Java API和在Unix上运行的能力.

无论我们最终选择哪种产品,我们都会被要求寻找咨询服务来帮助我们构建模板,因此能够找到精通该技术的开发人员非常重要.

更新:

Ecrion人员进行了性能比较 ,这与renderX 人员有争议.然而,到目前为止,renderX拒绝提供他们自己的基准测试或测试进行比较.我想我必须运行自己的基准测试.

到目前为止,我倾向于Ecrion,因为它支持WordML输出,而renderX的人有点粗鲁.

pdf-generation xsl-fo

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

oracle sql developer正在截断我的结果

我正在调用这样的存储函数:

select XML_INVOICE.GENERATE_XML_DOC('84200006823') from dual;
Run Code Online (Sandbox Code Playgroud)

然后查询结果显示在下面的表格中,我可以右键单击并选择"导出数据" - > XML

<?xml version='1.0'  encoding='UTF8' ?>
<RESULTS>
  <ROW>
    <COLUMN NAME="XML_INVOICE.GENERATE_XML_DOC('84200006823')" <![CDATA[<xml>yada yada</xml><morexml>...]]></COLUMN>
  </ROW>
</RESULTS>
Run Code Online (Sandbox Code Playgroud)

问题是"..." - SQL Developer(Linux上的2.1.0.63)没有显示所有数据 - 它截断结果并附加省略号.这对我没用.如何让它导出我的所有数据?

xml sql oracle

7
推荐指数
2
解决办法
8928
查看次数

为什么parsecs"选择"组合似乎坚持第一选择?

在查看Real World Haskell中的CSV示例代码之后,我尝试构建一个小的XML解析器.但是关闭标签会因"意外"/"错误而错误输出.你能告诉我为什么我的"closeTag"解析器不起作用(或者可能不会被调用)吗?谢谢!

import Text.ParserCombinators.Parsec

xmlFile = manyTill line eof
line = manyTill tag eol
eol = char '\n'

word = many1 (noneOf "></")

tag = choice [openTag, closeTag, nullTag, word]

nullTag = between (char '<') (string "/>") word
closeTag = between (string "</") (char '>') word
openTag = between (char '<') (char '>')  tagContent
attrval = between (char '"') (char '"') word

atts = do {
        (char ' ')
        ; sepBy attr (char ' ')
}

attr = do …
Run Code Online (Sandbox Code Playgroud)

xml haskell parsec

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

如何使用soapUI测试MTOM Web服务?

我已经构建了一个包装Apache FOP的Web服务.您发送XML,它会为您提供包含呈现的PDF的MTOM流.现在它正在运行,我想对它进行一些性能测试.soapUI表示他们支持MTOM,我将其用于我所有的其他Web服务性能测试,所以如果我不必编写自定义测试工具,那就太棒了.

所以这就是问题:我在soapUI中得到了响应,它看起来像这样:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns2:RenderDocumentResponse xmlns:ns2="http://webservices.cscinfo.com/renderService">
         <ns2:Content>
            <ns2:fileName xsi:nil="1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <ns2:fileType>pdf</ns2:fileType>
            <ns2:mimeType>application/pdf</ns2:mimeType>
    <ns2:binaryData>JVBERAkAAiNkRUcERRkaYIMijggKNDkbEiioUBUbHrBBlE1HFwFBuWSWStGd+8ee/Nm98f935rn73P3Wfvfda6AJD8gwXCTFgJgAyhWBTh58WIjYtnYAcBDPAAA2wA4HCzs0IW+EYCmQJ82IxsmRP4F726DiD5+yrTP4zBAP+flLlZIjEAUJiM5/L42VwZF8k4PVecJbdPyZi2NE3OMErOIlmCMlaTc</ns2:binaryData>
         </ns2:Content>
         <ns2:message>file rendered</ns2:message>
      </ns2:RenderDocumentResponse>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

如何让soapUI为我转储和解码二进制数据?我想确保它是一个有效的PDF和所有这些.(为了简洁起见,我在响应中截断了数据,并将其用于保护内疚!所以这篇文章中不是真正的PDF数据)

更新:这是soapUI在"原始"响应选项卡中显示的内容:

HTTP/1.1 200 OK
Date: Wed, 13 Jan 2010 17:02:31 GMT
Transfer-Encoding: chunked
Content-Type: text/xml; charset=UTF-8
X-Powered-By: Servlet/2.5 JSP/2.1
Run Code Online (Sandbox Code Playgroud)

soap web-services mtom soapui

6
推荐指数
2
解决办法
2万
查看次数