我使用过XCode和Netbeans,我注意到它们有一个自动完成引号或括号的功能(我认为其他IDE也经常这样做).我不知道这个功能的名称是什么,但有没有办法在Emacs中做到这一点?
例如,当我输入
printf("
Run Code Online (Sandbox Code Playgroud)
我希望它能自动输入
printf("")
Run Code Online (Sandbox Code Playgroud)
将光标放在引号之间.
谢谢.
我遇到了一个Haskell函数,它告诉我们列表是否已经排序,而且我很难理解它是如何工作的.
有问题的代码是
f = zipWith (<=) <*> tail
Run Code Online (Sandbox Code Playgroud)
我明白这是相当的(在点式)
f' xs = zipWith (<=) xs (tail xs)
Run Code Online (Sandbox Code Playgroud)
并作为一个例子返回
f [4, 5, 1] == [True,False]
Run Code Online (Sandbox Code Playgroud)
我认为它与列表monad和顺序应用程序有关,但如果有人能让我的意思更清楚,我将不胜感激.到底在<*>做什么?
我有一个带有行结尾"\ r \n \n \n"的文件,并使用解析器eol = string "\r\r\n" :: Parser String来处理它们.为了获得这些分隔符之间的行列表,我想sepBy与一个解析器一起使用,该解析器返回任何不会被捕获的文本eol.通过文档查看,我没有看到一个否定解析器的组合器(除了模式”\r\r\n”'解析器之外的任何东西).
我尝试过使用sepBy (many anyToken) end,但many anyToken似乎很贪心,没有停止eol比赛.我无法使用many (noneOf "\n\r"),因为我的文字中有几个地方有单个'\n'字符.
有没有一个组合器可以让我反过来string "\r\r\n"?
是否可以使用幻像类型编写类似身份函数的东西,以便转换类型?
例如,给定以下类型定义
data Nucleotide a = A | C | G | T | U
data RNA = RNA
data DNA = DNA
Run Code Online (Sandbox Code Playgroud)
我想写一个转换函数
r2d :: Nucleotide RNA -> Nucleotide DNA
r2d U = T
r2d x = x
Run Code Online (Sandbox Code Playgroud)
但是,这不会进行类型检查,因为单个变量x在相对侧不能具有不同的类型.
是否有可能写这个而不必枚举
r2d :: Nucleotide RNA -> Nucleotide DNA
r2d U = T
r2d A = A
r2d C = C
r2d G = G
Run Code Online (Sandbox Code Playgroud) 我有一个装饰器(调用它deco),我想应用于我的Flask应用程序中的每个视图,以便修改响应头以避免IE的兼容模式(res.headers.add("X-UA-Compatible", "IE=Edge").我喜欢它
@app.route('/')
@deco
def index():
return 'Hello world'
Run Code Online (Sandbox Code Playgroud)
我目前使用子类Flask来创建应用程序(以修改jinja行为)
class CustomFlask(Flask):
jinja_options = ...
app = CustomFlask(__name__, ...)
Run Code Online (Sandbox Code Playgroud)
有没有办法可以修改CustomFlask将deco装饰器应用到所有响应中?
如果我想要一个版本的reads返回列表(Int, String),我看到的例子是
f x = reads x :: [(Int,String)]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以在无点样式(f = g . reads?)中执行此操作,或者如果这是您在Haskell中不做/不能做的事情.
我没有看到任何使用类型作为参数的例子,所以它可能不可行.
我正在尝试学习Atom的语法突出显示/语法规则,这些规则大量使用JS正则表达式,并且在python语法文件中遇到了一个不熟悉的模式.
该模式始于一个(?x)对我来说不熟悉的正则表达式.我在一个在线正则表达式测试器中查找它,似乎说它无效.我最初的想法是它代表了一个可选的左派,但我相信这些人应该在这里逃脱.
这只是Atom的coffeescript语法中的含义,还是我忽略了正则表达式的含义?
(这种模式也出现在我认为Atom来自的textmate语言文件中).
我想构建一些功能来在s3和本地文件系统之间移动文件,但是pathlib似乎吃掉了很多重复的斜杠,从而破坏了我的aws-cli功能:
from pathlib import Path
p = Path('s3://loc')
str(p)
=> 's3:/loc'
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使用pathlib来处理s3路径?
我希望能够将元数据附加到一系列数据帧(特别是原始文件名)上,以便在加入两个数据帧之后,我可以看到每个系列来自何处的元数据。
我看到关于GitHub的问题_metadata(在这里,在这里),包括一些与当前_metadata属性(在这里),但没有在大熊猫文档。
到目前为止,我可以修改_metadata属性以允许保留元数据,但是AttributeError在加入之后会得到一个提示。
df1 = pd.DataFrame(np.random.randint(0, 4, (6, 3)))
df2 = pd.DataFrame(np.random.randint(0, 4, (6, 3)))
df1._metadata.append('filename')
df1[df1.columns[0]]._metadata.append('filename')
for c in df1:
df1[c].filename = 'fname1.csv'
df2[c].filename = 'fname2.csv'
df1[0]._metadata # ['name', 'filename']
df1[0].filename # fname1.csv
df2[0].filename # fname2.csv
df1[0][:3].filename # fname1.csv
mgd = pd.merge(df1, df2, on=[0])
mgd['1_x']._metadata # ['name', 'filename']
mgd['1_x'].filename # raises AttributeError
Run Code Online (Sandbox Code Playgroud)
有什么办法可以保留吗?
更新:结语
作为讨论在这里,__finalize__无法跟踪系列是一个数据帧的成员中,只有独立的系列。因此,现在我将通过维护附加到数据帧的元数据字典来跟踪系列级别的元数据。我的代码如下:
def cust_merge(d1, d2):
"Custom merge function …Run Code Online (Sandbox Code Playgroud) 如果类型foldr是
> :t foldr
forall a b. (a -> b -> b) -> b -> [a] -> b
Run Code Online (Sandbox Code Playgroud)
和
> :t id
forall a. a -> a
Run Code Online (Sandbox Code Playgroud)
然后我希望foldr (.) id有相同的类型foldr,而不是
> :t foldr (.) id
forall b. [b -> b] -> b -> b
Run Code Online (Sandbox Code Playgroud)
看来我错了有关成分是如何工作的,因为我原本以为,对于一个功能f是f . id将给予f(id(x)) == f(x),保持的类型f.我foldr (.) id更容易误解的是如何更普遍地澄清其含义和构成?