许多功能可以简化为自由形式 - 但这对所有人来说都是如此吗?
例如,我不知道如何做到:
apply2 f x = f x x
Run Code Online (Sandbox Code Playgroud) 我看到了很多:
std::vector<Something> vec;
do_something_with_vec(vec);
Something *arr=&vec[0];
do_something_that_needs_carray(arr);
Run Code Online (Sandbox Code Playgroud)
我的意思是,一个向量可能会在内部使用一个数组,所以我明白为什么这个工作,我只是想知道这是否是定义的行为(比如,是一个实现者是否允许运行std :: vector的实现,这将是打破).
如果标准之间存在冲突,我对C++ 11标准所说的内容感兴趣.
我有这个测试:
(ns opengltuts.core-test
(:use clojure.test
opengltuts.util)
(:import (org.lwjgl.opengl
GL11 GL12 GL13 GL14 GL15 GL20 GL21 GL30 GL31 GL32 GL33)))
(def gl-classes [GL11 GL12 GL13 GL14 GL15 GL20 GL21 GL30 GL31 GL32 GL33])
(deftest find-method-test
(testing "find-method finds method in single class"
(is (= (find-method "toString" Object)
["public java.lang.String java.lang.Object.toString()"])))
(testing "find-method finds all methods in list of classes"
(is (= (apply find-method "glShaderSource" gl-classes)
(comment "Omitted a 'p' to trigger failure")
["ublic static void org.lwjgl.opengl.GL20.glShaderSource(int,java.nio.ByteBuffer)"
"public static void org.lwjgl.opengl.GL20.glShaderSource(int,java.lang.CharSequence)"
"public …Run Code Online (Sandbox Code Playgroud) 我对C++ 11很陌生,现在正试图通过避免直接使用指针来提高我的C++技能.我正在尝试编写一个精灵管理器,它跟踪以前加载的精灵并释放未使用的精灵.我正在尝试使用shared_ptr(指向位图的指针),但是管理器还必须保持shared_ptr来创建精灵 - 所以引用计数不会下降到0.我可以以某种方式声明"父"shared_ptr在我的经理非拥有所以它不算作参考(并仍然创建该shared_ptr的拥有副本)?
我想要一个clojure数据结构:
(assoc q 0 1)即将前面的值设置为1)在Clojure中有类似的东西(不幸的是PersistentQueue不符合Nr.3),还是我应该在矢量上构建它?
我最近一直在阅读vinyl,它使用了奇怪的"种类列表"类型.在阅读了关于种类和乙烯基的一些内容之后,我对它们有了一些直观的了解,而且我已经能够将它们一起破解了
{-# LANGUAGE DataKinds,
TypeOperators,
FlexibleInstances,
FlexibleContexts,
KindSignatures,
GADTs #-}
module Main where
-- from the data kinds page, with HCons replaced with :+:
data HList :: [*] -> * where
HNil :: HList '[]
(:+:) :: a -> HList t -> HList (a ': t)
infixr 8 :+:
instance Show (HList '[]) where
show _ = "[]"
instance (Show a, Show (HList t)) => Show (HList (a ': t)) where
show (x :+: xs) = show x …Run Code Online (Sandbox Code Playgroud) 我想这里的每个人都已经看过其中一个(或者至少是一个类似的)问题,我仍然需要问,因为我无法在任何地方找到这个问题的答案(主要是因为我不知道到底应该看到什么)对于)
我写了这个小脚本,其中printTriangle应该打印出pascal三角形.
fac = product . enumFromTo 2
binomial n k = (product (drop (k-1) [2..n])) `div` (fac (n-k))
pascalTriangle maxRow =
do row<-[0..maxRow-1]
return (binomialRow row)
where
binomialRow row =
do k<-[0..row]
return (binomial row k)
printTriangle :: Int -> IO ()
printTriangle rows = do row<-(triangle)
putStrLn (show row)
where
triangle = pascalTriangle rows
Run Code Online (Sandbox Code Playgroud)
现在由于受过训练的眼睛可能显而易见的原因,但对我来说完全笼罩在神秘之中,当我尝试在ghci中加载时会出现以下错误:
Couldn't match expected type `IO t0' with actual type `[[Int]]'
In a stmt of a 'do' expression: row <- (triangle)
In the expression: …Run Code Online (Sandbox Code Playgroud) 我们目前在项目中遇到一些麻烦,因为我们发现在新的GHC版本中,像Char这样的旧模块默认是隐藏的,而新的模块(如Data.Char)是默认的.我现在正试图找出数据的版本., 控制.等模块被引入,哪个GHC版本首先隐藏像Char这样的包.
我写了一个相当原始的测试程序(我正在编写一个围绕LWJGL的OpenGL类的包装器,主要是出于美学原因,我决定在那里引入多线程,因为我之前从未编写过并发程序).程序结束后,我总是收到警告
我实际上在程序进入main函数之前得到了警告.抱歉混淆(我想这可能不是我的程序,而是clojure本身的东西):
Reflection warning, NO_SOURCE_PATH:1 - call to invokeStaticMethod can't be resolved.
Run Code Online (Sandbox Code Playgroud)
我在编译期间没有收到任何警告,我觉得很奇怪.无论如何,这是程序:
(ns opengltuts.core
(:import (org.lwjgl.opengl GL11 Display))
(:use opengltuts.opengl)) ;my wrapper
(def world-state (ref {:running true :color [1.0 0.0 0.0 1.0]}))
(defn render-world [state]
(apply glClearColor (:color state))
(glClear GL11/GL_COLOR_BUFFER_BIT)
(Display/update))
(defn render []
(Display/create)
(loop []
(let [world @world-state]
(when (:running world)
(do (render-world world)
(recur)))))
(Display/destroy))
(defn -main []
; without the annotation, I get a warning here too.
(let [render-thread (doto (Thread. ^Runnable render) …Run Code Online (Sandbox Code Playgroud) 我编写了一个非常简单的、相当低级的 HTTP(嗯,HTTP 的一部分)服务器作为练习,以更加熟悉我一直避免的整个网络事物。它在第一次尝试时工作得相当好(我不会推荐任何人实际使用它,但它会按照我的指示去做)。现在的问题是 GET 操作失败了很多(刷新有帮助,但它不是很好 - 下面的详细信息),我认为这是因为我读取请求的方式(我相当确定我的路由有效):
void start()
{
//...
try(ServerSocket webSock = new ServerSocket(47000) {
//...
while(running) {
try {
Socket sock = webSock.accept();
//read/write from/to sock
}
//...
Thread.sleep(10);
}
}
}
Run Code Online (Sandbox Code Playgroud)
(完整代码在这里:http : //pastebin.com/5B1ZuusH)
我不确定我到底做错了什么。
我确实收到错误:
This webpage is not available
The webpage at http://localhost:47000/ might be temporarily down or it may have moved permanently to a new web address.
Error 15 (net::ERR_SOCKET_NOT_CONNECTED): Unknown error.
Run Code Online (Sandbox Code Playgroud)
相当多(整个页面不会加载),有时脚本或图像也不会加载。如果需要,我可以发布整个代码,但其余的主要是样板。
haskell ×4
clojure ×3
c++ ×2
c++11 ×2
data-kinds ×1
ghc ×1
http ×1
java ×1
pointfree ×1
shared-ptr ×1
unit-testing ×1
webserver ×1