我想这里的每个人都已经看过其中一个(或者至少是一个类似的)问题,我仍然需要问,因为我无法在任何地方找到这个问题的答案(主要是因为我不知道到底应该看到什么)对于)
我写了这个小脚本,其中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) 从我收集到的有关agda的信息中,我(显然是错误地)得出的结论? {A}相当于{A : Set}.现在我注意到了
flip : ? {A B C} -> (A -> B -> C) -> (B -> A -> C)
Run Code Online (Sandbox Code Playgroud)
是无效的(关于Set\omega的东西反过来似乎是一些内部的东西,但是
flip : {A B C : Set} -> (A -> B -> C) -> (B -> A -> C)
Run Code Online (Sandbox Code Playgroud)
很好.任何人都可以为我清除这个吗?
我正在编写一个InputStream以恒定间隔从文件中提供行的代码。我BufferedReader以前使用过,但遇到了缓冲问题(在读取整个文件之前没有得到任何东西),无论如何速度都不是问题(间隔类似于每秒或每半秒 - 沿着这些线)。除了无缓冲之外,是否有一个具有readLine类似 in的方法的类BufferedReader?
(编辑:我刚刚检查过 - 我的课程似乎有效,显然问题出在输出上)
这是我使用流 ( OnlineDataSimulator)的代码。我已经检查过,流完全符合我的要求,所以显然我在输出上做错了。(实际问题是,我希望每 X 毫秒发生一次输出 - X 是 的第二个参数OnlineDataSimulator。运行此代码时会发生什么,我首先得到 X* 行等待,然后立即获得整个输出。)
System.out.println("Testing:");
PrintStream fout = new PrintStream(new FileOutputStream("testfile"));
for(int i=0; i<20; ++i) {
fout.println(i);
}
fout.close();
BufferedReader fin = new BufferedReader(new InputStreamReader(
new OnlineDataSimulator("testfile",250)));
String line;
while((line=fin.readLine())!= null){
System.out.println(line);
System.out.flush();
}
fin.close();
(new File("testfile")).delete();
Run Code Online (Sandbox Code Playgroud) 我有一个SpriteManager类,为我加载和缓存精灵,并从缓存中删除未使用的精灵.无论如何,这是个主意,我有点卡住了.我有一个map<string,weak_ptr<ALLEGRO_BITMAP>>存储sprite的地方,并使用weak_ptr来生成shared_ptr.现在我正在尝试使用也从地图中删除位图的删除器,它看起来像这样(显然不起作用):
[&bitmaps](ALLEGRO_BITMAP* bmp){
for(auto it = bitmaps.begin(); it!=bitmaps.end(); ++it) {
if((*it).second == bmp) {
bitmaps.erase(it);
al_destroy_bitmap(bmp);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
位图是我正在谈论的地图.当然,我不能比较(*it).second和bmp,但我也因为我在缺失者是无法锁定的weak_ptr.除了保持弱指针和原始指针外,我真的别无选择吗?
我最近从源代码编译了Allegro-5.0(遵循wiki的说明).我在这个过程中没有遇到任何错误,所以我认为它进展顺利.但是,即使是最小的测试程序,我也会遇到链接器错误:
//test.cpp
#include <allegro5/allegro.h>
int main()
{
al_init();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在编译
g++ `pkg-config --libs allegro-5.0` test.cpp -o test
Run Code Online (Sandbox Code Playgroud)
但我总是得到
/tmp/ccVmmERa.o: In function `main':
test.cpp:(.text+0xf): undefined reference to `al_install_system'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
(pkg-config返回-L/usr/local/lib -lallegro,似乎没有任何问题)
另外,我可以使用给定的makefile编译示例,因此库似乎没有任何问题.我只是尝试做同样的事情,makefile使它工作,但我根本不理解它(我几乎不能写我自己的简单).
哦,我正在使用Ubuntu 11.10和gcc 4.7,尽管我认为它与它没有任何关系.
那么 - 为什么会发生这种情况,我该如何解决?
我最近遇到了一个C程序,其中main函数只接受了一个参数.这在C89是合法的吗?gcc似乎没有任何问题.
我认为发生的是签名被忽略而且主要被称为main(int,char**)反正,但我不确定.
在程序中看起来像这样:
main(argc) {
...
}
正如问题标题所说,我正在尝试创建一条产生位置的导线(在每一步中以一定的速度移动位置),"弹跳"掉其他物体.我能想到的最简单的例子就是在一个盒子里移动,就像在一些屏幕保护程序中一样.
我写这个函数是为了做到这一点(仅针对一个轴):
import Control.Wire
bouncyWire :: Double -> Double -> Double -> Double -> Wire () IO a Double
bouncyWire startPosition startVelocity lowerBound upperBound = proc _ -> do
rec
v <- delay startVelocity -< if p < lowerBound || p > upperBound
then -v else v
p <- integral_ startPosition -< v
returnA -< p
Run Code Online (Sandbox Code Playgroud)
(我实际上使用它与不同的monad,但这段代码实际上并没有使用它,这会使问题过于复杂).
counterSession $ 1/60然而,踩着它,我遇到了一个问题 - 而不是从墙上"弹跳",它会卡在那里.我认为发生的事情是它一直在翻转速度v,但我不知道为什么.我想我可能会使用延迟错误或其他东西.
嗨,我正在尝试编写一些基本代码来实现Bresenham算法,但我不得不尝试使用round和/.我的代码是:
bresenhamAlgorithm :: Coord -> Coord -> Int -> Int
bresenhamAlgorithm (x1, y1) (x2, y2) x'= round $ (fromIntegral ((y2 -
y1) * (x' - x1)) / fromIntegral (x2 - x1)) + y1
Run Code Online (Sandbox Code Playgroud)
我不断收到No instance for (Fractional Int) arising from a use of ‘/’和No instance for (RealFrac Int) arising from a use of ‘round’错误存在的.我不明白,因为我相信fromIntegral会将分子和分母转换为允许使用该/操作的分数?
在尝试构建此项目时:
project_layout = Layout.new
project_layout[:source,:main,:java] = 'src'
project_layout[:source,:test,:java] = 'test'
define 'hausaufgaben', :layout => project_layout do
project.version = '1.0'
package :jar
end
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
RuntimeError : Unable to download org.apache.ant:ant:jar:1.8.3. No remote repositories defined.
Run Code Online (Sandbox Code Playgroud)
从这个消息我收集内部构建器使用ant(奇怪的是,我以为它使用Rake进行构建).该快速入门并没有提到这一点.更令人讨厌的是我已经拥有了蚂蚁(1.8.2而不是1.8.3,但这不应该产生如此巨大的差异),奇怪的是,只要buildr找不到任何java文件就没有抱怨(通过将布局保留为默认值来测试).
现在回答实际问题:我是否必须添加一个存储库,其中buildr可以找到ant,否则我可以这样做吗?
为了记录:我安装了buildr jruby -S gem install buildr并运行它jruby -S buildr package.
我只是在研究scala,因为大多数人似乎都喜欢它.所以我以为我会写FizzBuzz(因为它比HelloWorld更有趣),但是有点卡住,因为无论我把它放进去,如果我PartialFunction用匹配/ case语法定义我的s,他们的isDefinedAt方法似乎总是返回true .任何人都可以向我解释我错过了什么(或者这是一个错误?).我正在使用Scala 2.10.0版本.
码:
object Main extends App {
def applyAndJoin[A, B](f: PartialFunction[A, B],
g: PartialFunction[A, B])(h: (B, B) => B): PartialFunction[A, B] = {
PartialFunction[A, B] {
case a if (f isDefinedAt a) && (g isDefinedAt a) => h(f(a), g(a))
} orElse f orElse g
}
val fizz = PartialFunction[Int, String] { case a if a % 3 == 0 => "Fizz" }
val buzz = PartialFunction[Int, String] { case a if a % …Run Code Online (Sandbox Code Playgroud) 对于问题标题的模糊性我很抱歉,但我不完全确定我问的问题是什么.我正在尝试部署我在TomEE上使用GWT构建的示例应用程序,但由于某种原因部署失败.我有一个堆栈跟踪,但那个文本墙对我来说完全没有意义.我知道注释扫描仪是什么,但我不知道为什么tomee无法创建一个或如何与我必须做的任何事情相关联来解决它.该应用程序基本上是StockWatcher从一个在这里.我除了把gwt输出放在我的战争的根目录上之外什么也没做,然后像这样添加一个web.xml(我不是那个有实际客户端服务器通信的部分所以我只添加默认的servlet到服务静态内容)(在linux下运行,使用oracle jdk 1.7)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
这是catalina.out的最后一个输出
Apr 07, 2014 9:45:39 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /home/hannes/apps/apache-tomee-plus-1.6.0/webapps/web.war
Apr 07, 2014 9:45:39 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
INFO: ------------------------- localhost -> /web
Apr 07, 2014 9:45:39 PM org.apache.openejb.util.JarExtractor extract
INFO: Extracting jar: /home/hannes/apps/apache-tomee-plus-1.6.0/webapps/web.war
Apr 07, 2014 9:45:39 PM org.apache.openejb.util.JarExtractor extract …Run Code Online (Sandbox Code Playgroud) 因此,我已经看到了这个问题,该问题解释了如何serde_json既可以通过引用获取读者/作家,又可以选择拥有他们的所有权。很公平。
但是我不知道它是如何工作的Write-所有Write方法都需要一个&mut self,所以我认为如果我传递一个仅知道其参数是对某事物的引用的方法,Write那么它将无法对其进行任何操作。但是,即使我将非mut引用传递给以某种方式最终写入被引用文件的方法,该示例也可以编译并正常工作:
extern crate serde_json;
use std::fs::OpenOptions;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let file = OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open("/tmp/serde.json")?;
// why does this work?
serde_json::to_writer(&file, &10)?;
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
我传递了&File-如预期的那样,如果我要直接在上调用任何Write的方法,将File无法正常工作:
use std::io::{self, Write};
use std::fs::OpenOptions;
fn main() -> io::Result<()> {
let file = OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open("/tmp/wtf")?;
let file_ref = &file;
// this complains …Run Code Online (Sandbox Code Playgroud) 我想尝试看看Haskell是否真的可以用于游戏开发(我听说过FRP,但我不确定它是否可以解决我想象的优雅问题 - 我正在阅读http://theses.fh- hagenberg.at/thesis/Meisinger10现在要了解它)
无论如何 - 所以这里/sf/ask/66698901/我读到LambdaHack将是一个很好的例子 - 它似乎工作,但似乎也有很多不赞成的代码它和它的依赖关系(我有很多"不要使用它,这将在下一个版本中被删除" - 警告.这些包实际上是否已经被维护,或者我应该寻找其他的东西?