小编Cub*_*bic的帖子

Haskell初学者,试图输出一个列表

我想这里的每个人都已经看过其中一个(或者至少是一个类似的)问题,我仍然需要问,因为我无法在任何地方找到这个问题的答案(主要是因为我不知道到底应该看到什么)对于)

我写了这个小脚本,其中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)

haskell

5
推荐指数
1
解决办法
517
查看次数

\ forall(∀)在签名中实际意味着什么?

从我收集到的有关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)

很好.任何人都可以为我清除这个吗?

agda dependent-type

5
推荐指数
1
解决办法
924
查看次数

Java - 从缓冲阅读器打印行

我正在编写一个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)

java

4
推荐指数
1
解决办法
3万
查看次数

将weak_ptr与原始指针进行比较不起作用,寻找替代方案

我有一个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).secondbmp,但我也因为我在缺失者是无法锁定的weak_ptr.除了保持弱指针和原始指针外,我真的别无选择吗?

c++ resource-management shared-ptr weak-ptr c++11

4
推荐指数
1
解决办法
376
查看次数

Allegro 5.0 - 为什么我会收到链接器错误?

我最近从源代码编译了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 c++

3
推荐指数
1
解决办法
2602
查看次数

主要有单一论点

我最近遇到了一个C程序,其中main函数只接受了一个参数.这在C89是合法的吗?gcc似乎没有任何问题.

认为发生的是签名被忽略而且主要被称为main(int,char**)反正,但我不确定.

在程序中看起来像这样: main(argc) { ... }

c c89

3
推荐指数
1
解决办法
1976
查看次数

Netwire - 如何构建能够产生位置,弹跳墙壁的电线?

使用netwire-4.0.7

正如问题标题所说,我正在尝试创建一条产生位置的导线(在每一步中以一定的速度移动位置),"弹跳"掉其他物体.我能想到的最简单的例子就是在一个盒子里移动,就像在一些屏幕保护程序中一样.

我写这个函数是为了做到这一点(仅针对一个轴):

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,但我不知道为什么.我想我可能会使用延迟错误或其他东西.

haskell netwire

3
推荐指数
1
解决办法
241
查看次数

实施Bresenham算法

嗨,我正在尝试编写一些基本代码来实现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会将分子和分母转换为允许使用该/操作的分数?

haskell

3
推荐指数
1
解决办法
184
查看次数

Buildr失败,"无法下载蚂蚁"

在尝试构建此项目时:

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.

java buildr

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

使用case语法定义的Scala PartialFunction总是在isDefinedAt上返回true

我只是在研究scala,因为大多数人似乎都喜欢它.所以我以为我会写FizzBu​​zz(因为它比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)

scala

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

TomEE - 无法为Web模块创建注释扫描程序:null

对于问题标题的模糊性我很抱歉,但我不完全确定我问的问题是什么.我正在尝试部署我在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)

java gwt tomcat java-ee

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

为什么serde_json :: to_writer不需要其参数为`mut`?

因此,我已经看到了这个问题,问题解释了如何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)

rust

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

大多数Cabal包装实际上都在维护吗?

我想尝试看看Haskell是否真的可以用于游戏开发(我听说过FRP,但我不确定它是否可以解决我想象的优雅问题 - 我正在阅读http://theses.fh- hagenberg.at/thesis/Meisinger10现在要了解它)

无论如何 - 所以这里/sf/ask/66698901/我读到LambdaHack将是一个很好的例子 - 它似乎工作,但似乎也有很多不赞成的代码它和它的依赖关系(我有很多"不要使用它,这将在下一个版本中被删除" - 警告.这些包实际上是否已经被维护,或者我应该寻找其他的东西?

haskell

0
推荐指数
1
解决办法
159
查看次数