小编edw*_*rdw的帖子

haskell中有'Any'类型吗?

说,我想像这样定义一个记录属性:

data Attribute = Attribute {name :: String, value :: Any}

这当然不是有效的haskell代码.但是有一种类型'任何',基本上说任何类型都会这样做?或者是使用类型变量的唯一方法?

data Attribute a = Attribute {name :: String, value :: a}

haskell

42
推荐指数
4
解决办法
7175
查看次数

python pandas - 尾随分隔符混淆read_csv

我正在关注Python for Data Analysis一书中的示例.具体来说,2012年选举数据库来自第9章.数据位于一个大的csv文件中,以逗号分隔.但是文件的每一行都有一个额外的尾随分隔符,这似乎很混乱pandas.read_csv.

它将额外的分隔符视为有一个额外的列.因此,除了标题所需的列之外,还有一列.然后pandas.read_csv将第一列作为行标签.总体效果是列和标题不再对齐 - 第一列成为行标签,第二列由第一个标题命名,等等.

这很烦人.知道如何告诉pandas.read_csv做正确的事吗?我找不到一个.

好书,顺便说一句.

python numpy

11
推荐指数
3
解决办法
4025
查看次数

Erlang相当于Haskell的Data.List等?

作为一个Erlanger,我对Haskell羡慕的一件事就是它的模块Data.List.它是经过深思熟虑和精心命名的,例如它的intersperse,intercalatetranspose功能.我想知道是否有Erlang项目试图收集常见的数据结构和实用程序实现,并以简洁的方式呈现它们.

erlang

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

关于Enthought Traits/TraitsUI for Python桌面开发的观点

我正在寻找有关使用Traits/TraitsUI/enaml进行Python桌面开发的意见和经验.

文档和Enthought支持看起来很有前景,所以我想知道开发人员使用这个堆栈的真实第一手经验.

更新:

我主要关注的是迁移旧的几个桌面数据库应用程序:CRUD /查询/报告.然后,我特别感兴趣的是数据访问层:现在,我正在使用PosgtreSQL和 peewee(简约ORM):

  • 是否有SQL数据库的内置或侧面项目支持?
  • 如果是这样,是否有任何ORM支持?(我想这里的SqlAlchemy是'标准')

python user-interface traits enthought enaml

9
推荐指数
2
解决办法
3667
查看次数

向R提供新数据预测功能

R的predict函数可以带newdata参数,其文档如下:

newdata一个可选的数据框,用于查找要预测的变量.如果省略,则使用拟合值.

但我发现这并不完全正确,这取决于模型的拟合程度.例如,以下代码按预期工作:

x <- rnorm(200, sd=10)
y <- x + rnorm(200, sd=1)
data <- data.frame(x, y)
train = sample(1:length(x), size=length(x)/2, replace=F)
dataTrain <- data[train,]
dataTest <- data[-train,]
m <- lm(y ~ x, data=dataTrain)
head(predict(m,type="response"))
head(predict(m,newdata=dataTest,type="response"))
Run Code Online (Sandbox Code Playgroud)

但如果模型适合这样:

m2 <- lm(dataTrain$y ~ dataTrain$x)
head(predict(m2,type="response"))
head(predict(m2,newdata=dataTest,type="response"))
Run Code Online (Sandbox Code Playgroud)

最后两行将产生完全相同的结果.该predict函数以忽略newdata参数的方式工作,即它根本无法真正计算对新数据的预测.

罪魁祸首,当然是lm(y ~ x, data=dataTrain)lm(dataTrain$y ~ dataTrain$x).但我没有找到任何提到这两者之间差异的文件.这是一个已知的问题吗?

我正在使用R 2.15.2.

r

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

实现 `std::marker::Unpin` 是否安全?

我即将将一些代码从 futures-0.1 转换为 futures-0.3,其中poll()方法现在需要固定数据。我的一些结构是不可固定的,这使移植变得复杂。但是似乎存在通过impl Unpin为这些类添加一个的简单方法。这安全吗?有哪些替代方案?

示例代码:

extern crate futures;

use std::future::Future;
use std::pin::Pin;
use std::task::{ Poll, Context };

struct InnerData {
    _pin: std::marker::PhantomPinned,
}

struct Stream {
}

struct Poller {
    _data: InnerData,
    file: Stream,
}

impl futures::stream::Stream for Stream {
    type Item = ();

    fn poll_next(self: Pin<&mut Self>, _cx: &mut Context) -> Poll<Option<Self::Item>> {
        Poll::Pending
    }
}

impl Future for Poller {
    type Output = Result<(), ()>;

    fn poll(self: Pin<&mut Self>, cx: &mut Context) -> …
Run Code Online (Sandbox Code Playgroud)

future rust

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

在haskell中比在c中生成冰雹序列慢一个数量级

在他的博客文章The Glasgow Haskell编译器和LLVM中,David Terei使用了一个生成冰雹序列来比较GHC性能与C的示例.我决定自己运行它,结果令人难以置信:GHC版本慢了一个多一级.代码是无辜的:

import Data.Word

collatzLen :: Int -> Word32 -> Int
collatzLen c 1 = c
collatzLen c n | n `mod` 2 == 0 = collatzLen (c+1) $ n `div` 2
               | otherwise      = collatzLen (c+1) $ 3*n+1

pmax x n = x `max` (collatzLen 1 n, n)

main = print . solve $ 1000000
    where solve xs = foldl pmax (1,1) [2..xs-1]
Run Code Online (Sandbox Code Playgroud)

除了代入foldlfoldl',我不认为我可以做任何事情来了.GHC版本在45秒内找到答案,无论我使用哪个后端,而C版仅使用1.5秒!

我的设置是Haskell平台2011.2.0.1(32位)+ OS X 10.6.6与gcc 4.2.1.大卫在他的帖子中使用了GHC 6.13.这是GHC 7.0.3的已知错误吗?或者我一定错过了一些非常明显的东西. …

haskell

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

Iteratee I/O:需要事先知道文件大小

假设我需要解析一个二进制文件,该文件以三个4字节幻数开头.其中两个是固定字符串.然而,另一个是文件的长度.

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Data.Attoparsec
import Data.Attoparsec.Enumerator
import Data.Enumerator hiding (foldl, foldl', map, head)
import Data.Enumerator.Binary hiding (map)
import qualified Data.ByteString as S
import System

main = do
    f:_ <- getArgs
    eitherStat <- run (enumFile f $$ iterMagics)
    case eitherStat of
        Left _err -> putStrLn $ "Not a beam file: " ++ f
        Right _ -> return ()

iterMagics :: Monad m => Iteratee S.ByteString m ()
iterMagics = iterParser parseMagics

parseMagics :: Parser () …
Run Code Online (Sandbox Code Playgroud)

haskell

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

不能借用foo作为不可变因为它也被借用为可变的

我有以下(无辜)Rust代码:

let file = &Path(some_file_name);
let mut buf = [0u8, ..12];
match io::file_reader(file) {
    Ok(reader) => reader.read(buf, buf.len()),
    Err(msg) => println(msg)
}
Run Code Online (Sandbox Code Playgroud)

rustc抱怨

不能借用buf[]不可变的因为它也被借用为可变的

如果将相应的行更改为:

Ok(reader) => reader.read(buf, 12),
Run Code Online (Sandbox Code Playgroud)

一切都会好起来的.但它不太令人满意,因为现在缓冲区的长度在代码中重复.虽然模糊地理解为什么rustc抱怨,但我仍然认为rustc应该能够推断出这len()是一个纯粹的函数并且没有副作用,所以代码是有效的.此外,以这种方式读取缓冲区是一种非常常见的模式.

那么这里惯用的Rust方式是什么?

编辑:代码是为Rust 0.8.正如@pnkfelix指出的那样,Reader.readAPI从那时起就发生了变化.它不再需要第二个参数.

rust

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

在 Rust 中运行命令 (vim)

std::process::Command::new("/usr/bin/sh")
    .arg("-c")
    .arg("vim")
    .arg("file")
    .spawn()
    .expect("Error: Failed to run editor");
Run Code Online (Sandbox Code Playgroud)

当我运行这段代码时,会运行一个 vim 进程,编辑该文件,尽管它没有在终端中打开(不确定确切的术语)我/是否可以在终端中实际打开 vim

vim command rust

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

标签 统计

haskell ×3

rust ×3

python ×2

command ×1

enaml ×1

enthought ×1

erlang ×1

future ×1

numpy ×1

r ×1

traits ×1

user-interface ×1

vim ×1