小编Rob*_*b N的帖子

帮助Haskell动态插件加载

我是Haskell的初学者,我正试图在'plugins'包中使用动态加载.我有点迷茫.这是一个包含两个文件的最小程序.

Main.hs:

module Main (main) where

import System.Plugins

main :: IO ()
main = do
  putStrLn "Loading"
  mv <- dynload "Plug.o" [] [] "thing"   -- also try 'load' here
  putStrLn "Loaded"
  case mv of
    LoadFailure msgs -> putStrLn "fail" >> print msgs
    LoadSuccess _ v -> putStrLn "success" >> print (v::Integer)
Run Code Online (Sandbox Code Playgroud)

和Plug.hs:

module Plug (thing) where

thing :: Integer
thing = 1234000
Run Code Online (Sandbox Code Playgroud)

我编译Plug with ghc -c Plug.hs产生Plug.o. 然后我用ghc -o Main Main.hs,编译Main.hs ,然后运行Main.我也尝试更换loaddynload,并与运行runhaskell …

plugins haskell dynamic-loading

18
推荐指数
1
解决办法
2056
查看次数

为什么box-sizing在table vs div上的表现不同?

这是HTML:http://jsfiddle.net/jC8DL/1/

<div style='width:300px;border:1px solid green'>
  <div>Outer div</div>
  <div style='width:100%;border:1px solid red;margin:10px;'>
    Inner div, 10px margin.
  </div>
  <div style='width:100%;border:1px solid red;padding:10px;'>
    Inner div, 10px padding.
  </div>
  <div style='width:100%;border:1px solid red;padding:10px;box-sizing:border-box'>
    Same, with box-sizing: border-box
  </div>
  <table style='width:100%;border:1px solid red;padding:10px;'>
    <tr><td>Inner table, 10px padding</td></tr>
  </table>
</div>  
Run Code Online (Sandbox Code Playgroud)

它在我的Chrome中看起来像这样:

在此输入图像描述

我想我知道所有事情,直到最后一个.我的Chrome检查器显示了表的计算box-sizing样式,content-box所以我希望它的行为类似于第二个div,溢出并且看起来很难看.它为什么不同?这是在HTML/CSS规范中的某处记录的吗?

html css html-table css3

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

如何在GCC 4.5中使用C++ 0x原始字符串?

这个页面说GCC 4.5有C++原始字符串文字:

http://gcc.gnu.org/projects/cxx0x.html

但是当我尝试使用此页面中的语法时:

http://www2.research.att.com/~bs/C++0xFAQ.html#raw-strings

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s = R"[\w\\\w]";

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

/opt/local/bin/g++-mp-4.5 -std = gnu ++ 0x -O3 rawstr.cc -o rawstr
rawstr.cc:9:19:错误:原始字符串分隔符
rawstr.cc中的字符'\'无效: 9:5:错误:在程序中迷路'R'

原始字符串的正确语法是什么?

c++ g++ c++11

15
推荐指数
1
解决办法
7651
查看次数

Haskell懒惰 - 我如何更快地强制IO发生?

我刚开始学习Haskell.下面是一些以强制性风格编写的代码,它实现了一个简单的服务器 - 它打印出HTTP请求头.除了我需要在Haskell中重新思考它,使用惰性列表和更高阶函数之外,我还想清楚地看到它为什么不能按照我的意图行事.它总是一个落后 - 我用一个请求命中它,没有任何反应,再次点击它,它打印第一个请求,第三次点击它,它打印第二个请求,等等.为什么?什么是对此代码的最小更改,会导致它在请求进入时正确打印?

import Network
import System.IO
import Network.HTTP.Headers

acceptLoop :: Socket -> IO ()
acceptLoop s = do
  (handle, hostname, _) <- accept s
  putStrLn ("Accepted connection from " ++ hostname)
  text <- hGetContents handle
  let lns = lines text
      hds = tail lns
  print $ parseHeaders hds
  hClose handle
  acceptLoop s


main :: IO ()
main = do
  s <- listenOn (PortNumber 8080)
  acceptLoop s
Run Code Online (Sandbox Code Playgroud)

谢谢,罗布

跟进

所有的答案都很有帮助.下面的代码可以工作,但不会像建议的那样使用字节串.后续问题:可以ioTakeWhile使用标准库中的某些函数替换,可能在Control.Monad中?

ioTakeWhile :: (a -> Bool) -> …
Run Code Online (Sandbox Code Playgroud)

io haskell lazy-evaluation

14
推荐指数
2
解决办法
3445
查看次数

在Swift中,重置didSet内的属性会触发另一个didSet吗?

我正在对此进行测试,看起来如果你改变其中的值didSet,你就不会再接到另一个电话了didSet.

var x: Int = 0 {
    didSet {
        if x == 9 { x = 10 }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以依靠吗?它在某处记录了吗?我没有在Swift编程语言文档中看到它.

swift didset swift3 property-observer

14
推荐指数
2
解决办法
7503
查看次数

如何在NSAttributedString中定义段落?

我看到有一个属性name(NSParagraphStyleAttributeName)用于将段落样式应用于Cocoa中的文本.文本存储在一个NSAttributedString,但是在该字符串中定义"段落"的内容 - 它是换行符\n吗?其他人物?如果它是a \n,那么如何在不启动新段落的情况下创建新行.最后,当您将ParagraphStyle附加到字符串时,是否必须使用整个段落的确切范围,或者可以将其放在段落中的任何子范围内.如果它可以是子范围,系统如何处理同一段落上的两个或多个ParagraphStyles?

谢谢,罗布

macos cocoa nstextview nsattributedstring

13
推荐指数
1
解决办法
9407
查看次数

关于此Scala模式匹配中未经检查的类型参数的警告?

这个文件:

object Test extends App {
    val obj = List(1,2,3) : Object
    val res = obj match {
       case Seq(1,2,3) => "first"
       case _ => "other"
    }
    println(res)
}
Run Code Online (Sandbox Code Playgroud)

给出这个警告:

Test.scala:6: warning: non variable type-argument A in type pattern Seq[A]  
is unchecked since it is eliminated by erasure
   case Seq(1,2,3) => "first"
Run Code Online (Sandbox Code Playgroud)

Scala版本2.9.0.1.

我没有看到如何执行匹配需要擦除类型参数.第一个案例子句是为了询问obj是否是一个3个元素等于1,2和3的Seq.

如果我写了类似的东西,我会理解这个警告:

case strings : Seq[String] => ...
Run Code Online (Sandbox Code Playgroud)

为什么我会收到警告,什么是让它消失的好方法?

顺便说一句,我确实希望与静态类型的Object匹配.在实际代码中,我正在解析类似于Lisp基准的东西 - 它可能是一个字符串,基准序列,符号,数字等.

scala pattern-matching type-parameter

13
推荐指数
1
解决办法
4278
查看次数

为什么Closure编译器重命名extern类型的属性?

我把它放在externs文件中:

/** @typedef {{english: string, spanish: string}} */
var SpanishNoun;
Run Code Online (Sandbox Code Playgroud)

然后我有javascript:

/**
 * @param {SpanishNoun} n 
 */
exp1.processData3 = function (n) {
    console.log("pd3:", n.english, n.spanish, n['english'], n['spanish']);
}
Run Code Online (Sandbox Code Playgroud)

编译为:

function(a){console.log("pd3:",a.a,a.c,a.english,a.spanish)};
Run Code Online (Sandbox Code Playgroud)

所以它仍然将'英语'重命名为'a'等等.你如何阻止它?为什么它认为它可以重命名"外部"的东西.

后续问题

John的回答引出了另一个问题:我可以告诉Closure编译器,仅针对特定类型,停止重命名属性吗?

javascript google-closure-compiler

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

告诉Eclipse只自动完成方法名称?

假设我正在编辑一行......

obj.fooBar(x, y, z);
Run Code Online (Sandbox Code Playgroud)

我想将方法​​名称更改为fooSomethingElse,但保留大部分参数.如果我删除全部或部分名称,然后使用内容辅助,它会完成方法名称,但会启动一个新的arg列表...

obj.fooSomethingElse(arg1, arg2)(x, y, z)
                     ^---- this arg is highlighted for editing
Run Code Online (Sandbox Code Playgroud)

我经常要删除"(arg1,arg2)".我可以在首选项中关闭"填充方法参数",然后我只需要删除"()",但它仍然很烦人.是否有另一个命令只能完成方法名称.理想情况下,它只是来自通用内容辅助的单独命令和键组合,因此我可以根据需要调用其中一个.

eclipse autocomplete eclipse-jdt

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

可以使用Java 9 jshell在另一个JVM中运行代码吗?

Java 9有一个Java的read-eval-print循环,叫做jshell.我从命令行看到它的基本模式.它还能用于远程过程吗?换句话说,我可以连接到另一个Java进程并输入代码片段以在该运行时内运行吗?这将是改变应用程序服务器配置状态,而无需编写与UI的管理工具的好方法.

java java-9 jshell

10
推荐指数
2
解决办法
736
查看次数