小编Ale*_*lex的帖子

如何在Haskell中将列表转换为元组?

我怎样才能最好地将列表转换为Haskell中的元组:

[1,2,3,4,5,6] -> (1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)

haskell

26
推荐指数
5
解决办法
2万
查看次数

调试C++预处理器

我正在努力建造Amaya.当构建失败时

错误:在'('标记之前的预期unqualified-id

我在没有编译的文件上只使用预处理器(用-E替换-c选项)运行g ++以查看发生了什么.这产生了一个80,000行文件,向我显示'Blue'已被(2 << 8)取代,这清楚地解释了错误.如果我纠正这个,文件编译正常.我想我可以忍受,但我想知道为什么会这样.

有没有办法可以跟踪预处理器如何替换特定字符串,在本例中为"Blue"?

=================更新===================

好吧,我找到了罪魁祸首:

> headers=`g++ [omited for brevity] -M  \
    ../../thotlib/dialogue/AmayaClassicNotebook.cpp`

> for file in $headers ; do grep -s -H Blue $file | grep "(2 << 8)";done 

/usr/local/include/gc.h:#define Blue (2 << 8) 
Run Code Online (Sandbox Code Playgroud)

所以添加#undef Blue解决了这个问题.因此,使用-M和grep的这种组合似乎没问题,但有时候C++预处理器定义可能是真正的森林; 我很好奇是否有更好的方法,一些聪明的GNU工具可能.

c++ c-preprocessor

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

STM monad问题

这只是一个假设情景来说明我的问题.假设它们之间共享两个线程和一个TVar.在一个线程中有一个原子块来读取TVar并需要10秒才能完成.在另一个线程中是一个原子块,每秒修改一次TVar.第一个原子块是否会完成?当然它会一直回到开头,因为日志永远处于不一致的状态?

monads concurrency haskell transactional-memory

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

python有转换运算符吗?

我不这么认为,但我想我会问以防万一.例如,要在封装int的类中使用:

i = IntContainer(3)
i + 5
Run Code Online (Sandbox Code Playgroud)

我不只是对这个int示例感兴趣,我一直在寻找干净和通用的东西,而不是覆盖每个int和string方法.

谢谢,孙强.这就是我想要的.我没有意识到你可以继承这些不可变类型(来自C++).

class IntContainer(int):
    def __init__(self,i):
        #do stuff here
        self.f = 4

    def MultiplyBy4(self):
        #some member function
        self *= self.f
        return self

print 3+IntContainer(3).MultiplyBy4()
Run Code Online (Sandbox Code Playgroud)

python operators

7
推荐指数
3
解决办法
5953
查看次数

如何在python中修改本地命名空间

如何在python中修改函数的本地命名空间?我知道locals()在它内部调用时返回函数的本地命名空间,但是我想做这样的事情(我有理由为什么我要这样做,其中g不能被f访问,但它更快给出一个琐碎,愚蠢的例子来说明问题):

def g():
   pass

def f():
    g()

f.add_to_locals({'g':g})
Run Code Online (Sandbox Code Playgroud)

python namespaces local

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

调试Emacs Lisp主要模式

我正在为Emacs开发一个主要模式.例如,有什么方法可以在发生事件时在源代码中设置断点吗?

emacs elisp

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

python http 处理程序

我想要类似的东西BaseHTTPRequestHandler,只是我不希望它绑定到任何套接字;我想自己处理传入和传出的原始 HTTP 数据。有没有什么好的方法可以让我在 Python 中做到这一点?

为了澄清,我想要一个从Python(不是套接字)接收原始TCP数据的类,处理它并返回TCP数据作为响应(再次返回到python)。因此,此类将处理 TCP 握手,并且将具有覆盖我在 HTTP GET 和 POST 上发送的内容的方法,例如do_GETdo_POST。所以,我想要类似已经存在的服务器基础设施的东西,除了我想在 python 中传递所有原始 TCP 数据包而不是通过操作系统套接字。

python http request handler

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

Flex可以将字符串匹配返回到bison

我正在编写一个Bison/Flex程序,将LaTeX转换为MathML.目前,处理函数(即\ sqrt,\ frac等)的工作方式与此类似,每个函数都有一个标记

\\frac         {return FUNC_FRAC;}
Run Code Online (Sandbox Code Playgroud)

并将令牌FUNC_FRAC传递回bison,bison在此子树的描述中起作用:

function: FUNC_FRAC LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}
Run Code Online (Sandbox Code Playgroud)

但这意味着我需要定义和处理可能无限数量的令牌.我想做的是这样的事情,它不能像书面那样工作.在flex中:

\\[A-Za-z]+[0-9]*  {return the-matched-string;}
Run Code Online (Sandbox Code Playgroud)

在野牛:

function: "\frac" LBRACE atom RBRACE LBRACE atom RBRACE {$$ = "<mfrac>" + $3 + $6 + "</mfrac>";}
Run Code Online (Sandbox Code Playgroud)

string bison flex-lexer

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

使用jsr指令进行Java递归

我使用Jasmin Java汇编程序编译玩具语言.但是当我使用jsr指令递归回子程序,并使用java运行Jasmin的输出时,我收到错误"递归调用jsr条目".这是Jasmin代码(它是计算5!(我已经省略了类定义;所有这些都在主方法体中)):

f:
   swap
   istore 2
   iload 2
   ifeq label0
   iload 2
   iload 2
   ldc 1
   isub
   jsr f
   istore 1
   istore 2
   iload 1
   iload 2
   imul
   goto label1
label0:
   ldc 1
label1:
   swap
   astore 0
   ret 0
main:
   ldc 5
   jsr f
   istore 1
   iload 1
Run Code Online (Sandbox Code Playgroud)

java assembly jvm bytecode jasmin

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

如何将矢量转换为r中的集合

我希望在数据框的列中看到所有可能值的列表,而不重复.就像是:

as.set(series["begin_year"][,1])
Run Code Online (Sandbox Code Playgroud)

对于"begin_year"列虽然as.set不存在.

r

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

推导出多参数类型的类型

我正在尝试获取以下代码进行编译

import IO

data MyInt = MyInt Int
data MyString = MyString String deriving Show

class Show b => MyClass a b where
    fn :: a -> b

instance MyClass MyInt MyString where
    fn (MyInt i) = MyString (show i)

myprint :: (MyClass a b) => a -> IO () 
myprint a = putStrLn $ show (fn a)

main = myprint (MyInt 3)
Run Code Online (Sandbox Code Playgroud)

ghc Main.hs -XMultiParamTypeClasses.但是,编译器无法推断出b类型变量的类型(在本例中是MyString).如何将此信息明确告知编译器?

haskell types typeclass

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

使用 mypy 的 Python 中的依赖类型和多态性

对于以下示例,mypy返回错误:

错误:赋值中的类型不兼容(表达式类型为“A”,变量类型为“A1”)

from typing import Type

class A:
    pass

class A1(A):
    pass

class A2(A):
    pass

def fun(A_type: Type[A]) -> A:
    if A_type == A1:
        return A1()
    else:
        return A2()

a1: A1 = fun(A1)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想做的是在以下签名中强制执行依赖项fun

def fun(A_type: Type[A]) -> A_type
Run Code Online (Sandbox Code Playgroud)

这可能吗; 如果没有,推荐什么(注意:我希望它适用于尚未定义的子类A,所以我认为我不能使用overload装饰器)?我最好的选择只是使用cast吗?

python typing dependent-type mypy

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