小编Pau*_*han的帖子

python中的多参数'in'

L = [1,2,3,4]我们的名单.

然后1 in LTrue.2 in L也是True.

是否有一种干净的写作方式(1,2) in L并让它成真?

也就是说,给定一个列表L和测试名单T和关系多的,如果所有成员T都在L,那么T multi-in L就是True,否则T multi-in LFalse.

当然我可以写一个多功能,但这看起来很难看.

python

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

python中源文件的条件评估

假设我有一个仅用于预生产代码的文件

我想确保它不会在生产代码中运行 - 任何调用都必须失败.

文件顶部的这个片段不起作用 - 它破坏了Python语法,该语法指定return必须在函数中进行.

if not __debug__:
   return None
Run Code Online (Sandbox Code Playgroud)

这里最好的解决方案是什么 - 不涉及制造巨大的其他方案,即.:-)

python

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

在System.IO.runCommand中使用stdout和stdin

我试图将runProcess中的stdin和stdout捕获到一个字符串中进行分析.

但是,设置句柄似乎相当困难.我徘徊在GHC.IO.Handle,这似乎是合乎逻辑的目的地,但似乎这应该是非常简单的.

haskell systems-programming

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

使用宏生成动态函数

我正在组合一个宏来生成样式的简单函数:

(defun hello ()
  (format t "hello~&"))
Run Code Online (Sandbox Code Playgroud)

每个新函数都将替换为hello.

(defmacro generate-echoers (list)
  `(let ((list-of-functions
         (loop for var in ,list
            collect
              `(defun ,(intern var) ()
                 (format t ,(concatenate var "~&"))))))
  `(progn
     ,list-of-functions)))
Run Code Online (Sandbox Code Playgroud)

我开发了上述功能,最终证明我还没有掌握报价时间和扩展阶段.

所需的用法如下:(generate-echoers'("hi""ping""pong"))=>;每个人都说出自己名字的功能列表,正如HELLO所做的那样.

common-lisp

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

没有类的析构函数

假设我有一个返回闭包的函数:

sub generator
{

   my $resource = get_resource();
   my $do_thing = sub
   {
     $resource->do_something();
   }

  return $do_thing;
}

# new lexical scope
{
   my $make_something_happen = generator();

   &$make_something_happen();
}
Run Code Online (Sandbox Code Playgroud)

我希望能够确保当$make_something_happen从范围中删除时,我可以调用一些$resource->cleanup();

当然,如果我有一个类,我可以使用析构函数来做这个,但对于我想要做的事情,这似乎有点重量级.在构建对象的意义上,这实际上不是一个"对象",它只是一个需要在启动时和死亡之前执行某些代码的功能.

我如何在Perl中做到这一点(出于好奇,任何语言都支持这个想法)?

perl closures

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

使用正则表达式和模式匹配过滤[[String]]

我正在尝试根据正则表达式过滤[[String]].

filter (\fn -> case (matchRegex (mkRegex "*.exe") fn) of Nothing -> False
                                                         Just _ -> True) 
       directory_info
Run Code Online (Sandbox Code Playgroud)

不幸的是,lambda函数在语法上是无效的:根据ghc,模式匹配不能出现在表达式上下文中.

应该如何改写以简明扼要地执行预期的含义?

haskell

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

有没有办法访问CLOS中超类列表中的插槽?

有没有办法在CLOS中访问超类的插槽?

例如,在目标CI中可以执行

- (void) frob {
[super frob]
}
Run Code Online (Sandbox Code Playgroud)

这会向frob的(唯一)超类发送消息.

仔细阅读CLOS文档表明,DEFCLASS合并了有关类创建的所有超类信息,因此这种与超类通信的能力将丢失.它是否正确?

编辑:

这种情况有点不寻常:

鉴于课程

(defclass animal ()
  ((behavior-types
     :initform '(:eat :sleep :drink)
     :reader behavior-types)))

(defclass cow (animal)  
  ((behavior-types
     :initform '(:moo :make-milk)
     :reader behavior-types))

(defclass horse
  ((behavior-types 
     :initform '(:buck :gambol :neigh)
     :reader behavior-types))
Run Code Online (Sandbox Code Playgroud)

当使用类型的对象调用时,如何使用方法,BEHAVIOR-TYPES或者GET-BEHAVIORhorse返回'(:eat :sleep :drink :buck :gambol :neigh).也就是说,通过槽的继承"添加"到initform而不是替换它.

一个简单的解决方案是,而不是将数据分配给类,以具有如下通用方法:

(defgeneric behavior-types (obj))

(defmethod behavior-types ((obj animal)) nil)

(defmethod behavior-types :around ((obj animal))
  (append '(:eat :sleep :drink)
          (call-next-method obj)))


(defmethod behavior-types …
Run Code Online (Sandbox Code Playgroud)

common-lisp clos mop

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

这个Lisp函数的传统名称是什么?

我在其他地方看过这个功能,我记得,它有一个标准名称.我记不起来了,仔细阅读亚历山大的list.lisp图书馆并没有透露任何秘密.

(defun familiar-function (list func)
  (loop for e in list
        collect (if (listp e)
                    (familiar-function e func)
                    (funcall func e))))
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

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

SVN:处理"死"文件

我有一个SVN存储库.随着时间的推移,当我编辑,修改,更改等时,某些文件会变得多余/不需要.

最佳做法是什么:从SVN删除文件,或者只是将文件归零?或者我缺少第三种选择?

svn maintenance

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

Seq.generate_using是MIA

我正在尝试使用该Seq.generate_using功能但不幸的是,我似乎无法找到它.我以为它会住在这里:

Microsoft.FSharp.Collections.Seq.generate_using
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.我收到下面列出的错误.

C:\ Users\Owner\Documents\Visual Studio 2008\Projects\fsharp1\Program.fs(54,63):error FS0039:未定义值,构造函数,命名空间或类型"generate_using".在FSharp.PowerPack.dll中找到了具有此名称的构造,其中包含在某些先前版本的F#中隐式引用的一些模块和类型.您可能需要添加对此DLL的显式引用以编译此代码.

f#

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

标签 统计

common-lisp ×3

haskell ×2

python ×2

clos ×1

closures ×1

f# ×1

lisp ×1

maintenance ×1

mop ×1

perl ×1

svn ×1

systems-programming ×1