小编Eri*_*ikR的帖子

perl:内存文件句柄上的sysread?

不幸的是,这不起作用:

my $input = "this is a test";
open(my $fh, "<", \$input);
my $n = sysread($fh, $buf, 4);  # want $n == 4, $buf eq 'this'
Run Code Online (Sandbox Code Playgroud)

sysreadread预期的方式替换作品.

这是预期的吗?可以上班吗?我错过了什么吗?

perl

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

scala sbt-launch.jar - 同一目录下的多个项目?

我确信这很简单,但我还没弄明白......

我已经安装sbt-launch.jar了一个shell脚本来执行它(命名sbt).

如何将多个项目放在同一目录中?

当我运行sbt目录projecttarget创建并填充时,当前项目是default-XXXXX.该compile命令获取顶级目录中的源文件和顶级"lib"目录中的jar文件.

如何在同一目录下添加其他项目?每次我sbt在一个空目录中运行它都会创建一个20+ MB的project目录.

注1:当我跑步时sbt没有被问到"创建新项目?" 或任何其他问题.

注2:我使用的是这个网址的sbt-launch.jar:http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/0.10.1/sbt-launch .罐

我按照以下说明操作:http://code.google.com/p/simple-build-tool/wiki/Setup

scala sbt

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

以编程方式在运行时创建Moose类

我一直在玩这个代码:

package Foo;
use Moose;

package main;

my $PACKAGE = "Foo";
{
  no strict 'refs';
  my $has = *{"${PACKAGE}::has"}{CODE};
  my $with = *{"${PACKAGE}::with"}{CODE};

  # Add a instance member to class $PACKAGE

  $has->("bar", is => "rw", required => 1);

  # Add a role to class $PACKAGE

  $with->("some::role");
}

# Create an instance of $PACKAGE:

$PACKAGE->new(); # error: attribute 'bar' is required means we were successful
Run Code Online (Sandbox Code Playgroud)

这允许我在运行时创建Moose类,即将实例成员添加到类,添加角色等.

我的问题是:如何将Moose导入包中$PACKAGE

我知道我可以用eval做到这一点:eval "package $PACKAGE; use Moose";但我想知道是否有解决方案Moose->import(... $PACKAGE ...).

即,一种不使用的方式 …

perl moose

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

haskell具有不同字段名称的记录变体

鉴于这种:

data Foo = Bar { name :: String } | Baz { nickname :: String }
Run Code Online (Sandbox Code Playgroud)

两者的功能namenickname似乎是类型Foo -> String:

:t name
name :: Foo -> String

:t nickname
nickname :: Foo -> String
Run Code Online (Sandbox Code Playgroud)

但是,定义不完整,因为以下两个表达式都会引发模式匹配错误:

name $ Baz { nickname = "Bob" }
nickname $ Bar { name = "Fred" }
Run Code Online (Sandbox Code Playgroud)

是否有可能完成的定义namenickname,像IE的东西:

name Baz { nickname = n } = ...

nickname Bar { name = n } = ... …
Run Code Online (Sandbox Code Playgroud)

haskell record variant

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

macos - 如何告诉 cabal/ghc 在 /opt 中查找库/包含文件?

我已经通过 /opt 中的端口安装了 PCRE 库。

我正在尝试安装 PCRE-Light,但cabal install pcre-light报告:

Resolving dependencies...
Configuring pcre-light-0.4...
Preprocessing library pcre-light-0.4...
Base.hsc:103:18: error: pcre.h: No such file or directory
...
Run Code Online (Sandbox Code Playgroud)

pcre.h 位于/opt/local/include

更新:我在链接 macports 提供的 PCRE 库时遇到问题,所以我转而使用 Home Brew。

macos haskell ghc cabal

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

在没有浏览器的情况下授权 google api 客户端?

我有一个 python cron 作业,它对我在笔记本电脑上运行的日历执行操作。

我目前正在为 python 脚本使用“本机应用程序的客户端 ID”。

授权 client_secrets.json 凭证在台式机或笔记本电脑上不是问题,因为我有一个运行 javascript 的完整 GUI 浏览器。但是,如果我将它移动到另一台服务器,在我的笔记本电脑上运行的 client_secrets.json 文件似乎不起作用。

我想将 python cron 作业移动到云服务器。我的问题是:

  1. 在一台机器上授权的 client_secrets.json 文件是否应该在另一台服务器上工作?
  2. 在没有 GUI 浏览器(或不运行 javascript 的浏览器)的情况下授权 client_secrets.json 凭证是一个问题。是否可以编写授权脚本(因为我有 Google 用户名和密码)?
  3. 我应该使用“本机应用程序的客户端 ID”以外的其他授权方法吗?

google-api oauth-2.0

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

ghc - 命令行上的方括号?

在本页面:

http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours/Parsing

它显示了ghc被称为:

ghc -package parsec -o simple_parser [../code/listing3.4.hs listing3.4.hs]
Run Code Online (Sandbox Code Playgroud)

方括号是什么?我在使用ghc 7.0.4时遇到错误.这是为某种方式指定输入文件的搜索路径吗?

haskell ghc

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

将类型变量约束为具体类型

我有这个单形代码:

import Data.Array.MArray
import Data.Array.IO (IOUArray)
import Data.Ix (Ix)

push :: IOUArray Int Int -> Int -> [Int] -> IO Int
push stack top [] = return top
push stack top (k:ks) = do
  v <- readArray stack k
  if v >= 0 then push stack top ks
            else do writeArray stack k top
                    push stack k ks
Run Code Online (Sandbox Code Playgroud)

一个完全多态的签名push是:

push :: (MArray a e m, Ix e, Num e)  => a e e -> e -> [e] -> …
Run Code Online (Sandbox Code Playgroud)

polymorphism haskell type-variables

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

在模块中计算`Pat`s

我需要计算Pat一个haskell 的数量Module.我知道最简单的方法是在AST的每个级别上进行模式匹配,这将产生一个看起来像整个AST的巨大功能.我相信有一些方法可以利用像类似的类Functor或者State Monad依靠一些现有的函数来遍历树(如prettyPrint)和跟踪计数器,但我不确定它是如何工作的.

haskell uniplate

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

为什么括号需要`release`来产生被忽略的结果?

bracket
        :: IO a         -- ^ computation to run first (\"acquire resource\")
        -> (a -> IO b)  -- ^ computation to run last (\"release resource\")
        -> (a -> IO c)  -- ^ computation to run in-between
        -> IO c         -- returns the value from the in-between computation
bracket before after thing =
  mask $ \restore -> do
    a <- before
    r <- restore (thing a) `onException` after a
    _ <- after a
    return r
Run Code Online (Sandbox Code Playgroud)

这与某些API设计模式或约定有关吗?为什么不使用以下部分签名?

        -> (a -> IO ()) …
Run Code Online (Sandbox Code Playgroud)

haskell exception-handling

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