使用polymer.dart的Dart应用程序的pubspec.yaml文件看起来像这样(来自Polymer.dart代码实验室):
name: polymer_and_dart
description: Sample app built with the polymer.dart package
environment:
sdk: '>=1.2.0 <2.0.0'
dependencies:
polymer: '>=0.12.0 <0.13.0'
dev_dependencies:
unittest: '>=0.10.0 <0.11.0'
transformers:
- polymer:
entry_points:
- web/begin/index.html
- web/end/index.html
Run Code Online (Sandbox Code Playgroud)
什么的entry_points
其实是什么意思?声明入口点实际上做了什么?
我想shows
因为效率而连接一堆字符串(可能有很多字符串).但是,当我这样做时,我会得到不需要的"
字符:
Prelude> "a" ++ "b" ++ "c"
"abc" -- ordinary concatenation - expected result
Prelude> (shows "a" . shows "b" . shows "c") ""
"\"a\"\"b\"\"c\"" -- actual result
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会发生这种情况,我该怎么做才能实现++
使用该shows
功能的行为?
当我看到上面那些类型时(出于好奇心),我得到了以下内容:
Prelude> :t ("a" ++ "b" ++ "c")
("a" ++ "b" ++ "c") :: [Char]
Prelude> :t ((shows "a" . shows "b" . shows "c") "")
((shows "a" . shows "b" . shows "c") "") :: String
Run Code Online (Sandbox Code Playgroud)
是否[Char]
在一种情况下,并String
在其他情况下具有的行为做任何事情++ …
假设我有一些类型类Foo
和一些数据类型FooInst
是以下实例Foo
:
class Foo a where
foo :: a -> String
data FooInst = FooInst String
instance Foo FooInst where
foo (FooInst s) = s
Run Code Online (Sandbox Code Playgroud)
现在,我想定义一种数据类型,该类型存储类型在Foo
类型类中的对象,并且能够从该数据类型中提取该对象并使用它.
我找到的唯一方法是使用GADT和Rank2Types语言扩展并定义数据类型,如下所示:
data Container where
Container :: { content :: Foo a => a } -> Container
Run Code Online (Sandbox Code Playgroud)
但问题是,我无法使用content
选择器从Container中获取内容:
cont :: Container
cont = Container{content = FooInst "foo"}
main :: IO ()
main = do
let fi = content cont
putStrLn $ foo fi
Run Code Online (Sandbox Code Playgroud)
导致编译错误
Cannot use …
Run Code Online (Sandbox Code Playgroud) 在我的论证中解析我需要使用的代码,argparse.RawTextHelpFormatter
但我也希望以与默认格式化程序相同的方式将行自动换行为固定宽度.
如何将这两种行为结合起来有什么优雅的方法吗?
我有两个(或更多,但如果解决了两个,它解决了任何数字)2×N矩阵,它代表具有x(第一行)和y(第二行)坐标的点.这些点始终按递增的x坐标排序.我想要做的是我想将这两个矩阵合并为一个3乘N矩阵,这样如果两个点(每个矩阵一个)具有相同的x坐标,它们将在新矩阵中形成一列,第一个row是x坐标,第二和第三行是两个y坐标.但是,如果一个矩阵中的某个点的x坐标与第二个矩阵中的所有其他点不同,我仍然希望放置完整的3个元素列,使得x坐标仍然排序,并且缺少的值来自另一个矩阵由具有较低x坐标的最近值(如果没有则为NaN)替换.
最好通过例子来解释.
第一个矩阵:
1 3 5 7 % x coordinate
1 2 3 4 % y coordinate
Run Code Online (Sandbox Code Playgroud)
第二个矩阵:
2 3 4 7 8 % x coordinate
5 6 7 8 9 % y coordinate
Run Code Online (Sandbox Code Playgroud)
期望的结果:
1 2 3 4 5 7 8 % x coordinate
1 1 2 2 3 4 4 % y coordinate from first matrix
NaN 5 6 7 7 8 9 % y coordinate from second matrix
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何在matlab/octave和numpy中有效地完成它?(实际上,因为我总是可以"手动"使用循环,但这似乎不正确.)