小编kjo*_*kjo的帖子

Perl如何处理shebang线?

我正在努力了解如何perl处理shebang线.

曾经认为命令行中"命令位置"中提到的任何解释器都优先于shebang行中提到的解释器.例如,如果调用的可执行脚本demo看起来像这样

#!/usr/local/bin/perl-5.00503

printf "$]\n";
Run Code Online (Sandbox Code Playgroud)

...然后我会观察以下内容:

$ ./demo
5.00503
% /usr/local/bin/perl-5.22 ./demo
5.022003
Run Code Online (Sandbox Code Playgroud)

IOW,在第一次执行中,shebang中的解释器是正在运行的解释器,而在第二次执行中,它是在命令行中提到的解释器.到现在为止还挺好.

但是现在,如果我将shebang上的"解释器"更改为类似的东西/usr/bin/wc,那么它总是胜过perl我在命令行中提到的任何解释器:

% cat demo-wc
#!/usr/bin/wc

printf "$]\n";

% ./demo-wc                           # produces the expected behavior
       4       3      31 ./demo-wc
% /usr/local/bin/perl-5.22 ./demo-wc
       4       3      31 ./demo-wc
% /usr/local/bin/perl-5.14 ./demo-wc
       4       3      31 ./demo-wc
Run Code Online (Sandbox Code Playgroud)

AFAICT,这种特殊行为似乎是有限的perl口译员; 非perl翻译,例如/bin/bash,"否定"shebang:

% /bin/bash ./demo-wc
$]
Run Code Online (Sandbox Code Playgroud)

最重要的是,perl根据所提到的翻译,处理shebang似乎有完全不同的政策.


  1. 如何perl确定要遵循的政策?
  2. 两种情况下的政策究竟是什么?

perl shebang perl5

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

为什么子类化元组和子类化列表之间存在这种差异?

以下玩具示例有点奇怪,但它显示问题就像我可以说的那样.

首先,没有问题的部分:

class TupleWrapper(tuple):
    def __new__(cls, ignored):
        return super(TupleWrapper, cls).__new__(cls, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

该类TupleWrapper采用任意方式返回类似于常量的类似元组的对象(1, 2, 3).例如:

>>> TupleWrapper('foo')
(1, 2, 3)
>>> TupleWrapper(8)
(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

现在,考虑这个类:

class ListWrapper(list):
    def __new__(cls, ignored):
        return super(ListWrapper, cls).__new__(cls, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

TupleWrapper除了它的子类list而不是它之外,它是相同的tuple.因此,我期待以下

>>> ListWrapper('foo')
[1, 2, 3]
>>> ListWrapper(8)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

事实上,我得到的是

>>> ListWrapper('foo')
['f', 'o', 'o']
>>> ListWrapper(8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' …
Run Code Online (Sandbox Code Playgroud)

python subclass subclassing

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

如何在水平条形图中的条形右侧添加计数标签?

例如,这段代码

data <- data.frame(month = factor(c("Nov", "Dec", "Jan", "Feb")),
                   count = c(1489, 788, 823, 1002))

g <- (ggplot2::ggplot(data, ggplot2::aes(x=month, y=count))
        + ggplot2::geom_bar(stat="identity")
        + ggplot2::scale_x_discrete(limits=rev(data$month))
        + ggplot2::coord_flip())

g
Run Code Online (Sandbox Code Playgroud)

...产生这个

在此输入图像描述

将计数(1489、788 等)添加到相应栏的右侧的最​​简单方法是什么?

我对水平情况特别感兴趣,但我也想知道如何对垂直情况做类似的事情(计算在每个条形的顶部):

g <- (ggplot2::ggplot(data, ggplot2::aes(x=month, y=count))
        + ggplot2::geom_bar(stat="identity"))

g
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

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

仅使用Python标准库进行html到文本的转换

我正在寻找使用Python 2.7.x标准库中的模块将HTML转换为文本的最佳方法.(即,不BeautifulSoup,等等)

通过HTML到文本的转换,我的意思是道德等同于lynx -dump.实际上,只需智能地删除HTML标记,并将所有HTML实体转换为ASCII(或转换为UTF8编码的unicode)就足够了.

请不要使用基于正则表达式的答案.(正则表达不能完成任务.)

谢谢!

python standard-library html-parsing html-to-text

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

Child.prototype = Parent.prototype vs Child.prototype = new Parent()

在定义了一些构造函数之后,例如Child,我看到了以下两种形式:

Child.prototype = Parent.prototype;
Run Code Online (Sandbox Code Playgroud)

要么

Child.prototype = new Parent();
Run Code Online (Sandbox Code Playgroud)

两个都正确吗?如果是这样,是否有理由偏爱另一个?

javascript oop inheritance

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

在推断ADT的fmap

假设这样定义了两个新类型

type MyProductType a = (FType1 a, FType2 a)

type MyCoproductType a = Either (FType1 a) (FType2 a)
Run Code Online (Sandbox Code Playgroud)

......那就是FType1并且Ftype2都是Functor.

如果现在要声明MyProductTypeMyCoproductType作为实例Functor,编译器是否需要对各自fmap的定义进行明确定义,还是可以从之前的定义中推断出这些定义?

此外,这个问题的答案是依赖于实现的,还是来自Haskell规范?


作为背景,这个问题的动机是试图弄清楚我正在读的东西.作者首先定义

type Writer a = (a, String)
Run Code Online (Sandbox Code Playgroud)

...后来写道(我的重点)

... Writer类型构造函数是functorial in a. 我们甚至不需要实现fmap它,因为它只是一种简单的产品类型.

强调的文字是我试图理解的评论.我认为这意味着哈斯克尔可以推断fmap的对任何基于函子类型ADT,并且,特别是它可以推断出fmap一个'简单的产品类型’之类Writer的,但现在我认为这种解释是不正确的(至少如果我正确阅读ØrjanJohansen的回答.

至于作者对那句话的意思,现在我真的不知道.也许所有他的意思是,Writer以这样一种方式重新定义以使其功能性可以被明确化是不值得的,因为它是如此"简单......类型".(抓住稻草在这里.)

haskell functor algebraic-data-types bifunctor

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

函数如何将它透明接收的所有参数传递给另一个函数?

这篇文章的标题说明了一切.关键是调用函数X应该与被调用函数的签名无关Y.IOW,X应该只是传递给Y,集体,所有它(参数X)收到的,在离开它Y抱怨签名是否关闭.


我认为这只是一个问题

sub X {
  return Y( @_ );
}
Run Code Online (Sandbox Code Playgroud)

......但显然不是:

sub getpwuid_wrapper {
  return getpwuid( @_ );
}
Run Code Online (Sandbox Code Playgroud)

上面的包装器不仅仅是包装:

  DB<7> p getpwuid( 5 )
gamesx560games/usr/games/usr/sbin/nologin
  DB<8> p getpwuid_wrapper( 5 )
daemonx11daemon/usr/sbin/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

接下来的一点给出了可能发生的事情的线索:

  DB<9> p getpwuid( 1 )
daemonx11daemon/usr/sbin/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

由于我无法理解的原因,我认为这getpwuid( @_ )被解释为getpwuid( scalar @_ ).

注意: getpwuid只是举例说明问题.在实践中,人们需要这种传递功能,主要是直到运行时才知道将要调用的函数; 例如,当此功能是回调时.

perl

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

如何使用单个表达式复制data.frame和更改列名?

有没有办法用一个表达式来实现以下目的?:

copy_of_df <- df
names(copy_of_df) <- c("some", "new", "column", "names", ...)
Run Code Online (Sandbox Code Playgroud)

例如,从df下面定义开始

> set.seed(0)
> h <- 5
> (df <- data.frame(x = 1, y = 1:h, z = sample(LETTERS[1:3], h, replace = T)))
  x y z
1 1 1 C
2 1 2 A
3 1 3 B
4 1 4 B
5 1 5 C
Run Code Online (Sandbox Code Playgroud)

...我可以复制df并重命名副本的列,如下所示:

> copy_of_df <- df
> names(copy_of_df) <- c("P", "Q", "R")
> copy_of_df
  P Q R
1 …
Run Code Online (Sandbox Code Playgroud)

r

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

如何从命名列表中删除元素而不分配?

假设我有一个名为的列表

somelist <- list(a = 1, b = 5, c = 3)
Run Code Online (Sandbox Code Playgroud)

我知道我可以somelist$b通过分配NULL它来放弃:

somelist$b <- NULL
Run Code Online (Sandbox Code Playgroud)

我认为这对于交互式工作来说很好,但对于程序化工作来说并不是很好,因为它会强制创建其他多余的变量.


例如,假设foo(42)计算结果类似于somelist上面的列表,并且我想传递将b元素从foo(42)其他函数中删除的列表bar.在这种情况下,应用上面显示的方法需要以下内容:

superfluous.variable <- foo(42)
superfluous.variable$b <- NULL
bar(superfluous.variable)
rm(superfluous.variable)
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来传递bar修改后的结果,foo这不需要这些多余的任务.上面的四行将崩溃为一行:

bar(drop.item.from.list(foo(42), item.to.drop = "b"))
Run Code Online (Sandbox Code Playgroud)

R是否已经具有上述假设drop.item.from.list功能?

r

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

如何在GHCi中避免与打印相关的默认警告

此代码用于教科书中的练习.

如果我定义

minmax :: (Ord a, Show a) => [a] -> Maybe (a, a)
minmax [] = Nothing
minmax [x] = Just (x, x)
minmax (x:xs) = Just ( if x < xs_min then x else xs_min
                     , if x > xs_max then x else xs_max
                     ) where Just (xs_min, xs_max) = minmax xs
Run Code Online (Sandbox Code Playgroud)

......然后,ghci我得到这样的警告:

*...> minmax [3, 1, 4, 1, 5, 9, 2, 6]

<interactive>:83:1: Warning:
    Defaulting the following constraint(s) to type ‘Integer’
      (Num a0) arising from …
Run Code Online (Sandbox Code Playgroud)

haskell ghci

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