我是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.我也尝试更换load用dynload,并与运行runhaskell …
这是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规范中的某处记录的吗?
这个页面说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'
原始字符串的正确语法是什么?
我刚开始学习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) 我正在对此进行测试,看起来如果你改变其中的值didSet,你就不会再接到另一个电话了didSet.
var x: Int = 0 {
didSet {
if x == 9 { x = 10 }
}
}
Run Code Online (Sandbox Code Playgroud)
我可以依靠吗?它在某处记录了吗?我没有在Swift编程语言文档中看到它.
我看到有一个属性name(NSParagraphStyleAttributeName)用于将段落样式应用于Cocoa中的文本.文本存储在一个NSAttributedString,但是在该字符串中定义"段落"的内容 - 它是换行符\n吗?其他人物?如果它是a \n,那么如何在不启动新段落的情况下创建新行.最后,当您将ParagraphStyle附加到字符串时,是否必须使用整个段落的确切范围,或者可以将其放在段落中的任何子范围内.如果它可以是子范围,系统如何处理同一段落上的两个或多个ParagraphStyles?
谢谢,罗布
这个文件:
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基准的东西 - 它可能是一个字符串,基准序列,符号,数字等.
我把它放在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编译器,仅针对特定类型,停止重命名属性吗?
假设我正在编辑一行......
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)".我可以在首选项中关闭"填充方法参数",然后我只需要删除"()",但它仍然很烦人.是否有另一个命令只能完成方法名称.理想情况下,它只是来自通用内容辅助的单独命令和键组合,因此我可以根据需要调用其中一个.
Java 9有一个Java的read-eval-print循环,叫做jshell.我从命令行看到它的基本模式.它还能用于远程过程吗?换句话说,我可以连接到另一个Java进程并输入代码片段以在该运行时内运行吗?这将是改变应用程序服务器配置状态,而无需编写与UI的管理工具的好方法.
haskell ×2
autocomplete ×1
c++ ×1
c++11 ×1
cocoa ×1
css ×1
css3 ×1
didset ×1
eclipse ×1
eclipse-jdt ×1
g++ ×1
html ×1
html-table ×1
io ×1
java ×1
java-9 ×1
javascript ×1
jshell ×1
macos ×1
nstextview ×1
plugins ×1
scala ×1
swift ×1
swift3 ×1