我最近尝试my Array @a = 'a'..'z';
和my Array @a = @('a'..'z');
。
两者都会产生以下错误:
Type check failed in assignment to @a; expected Array but got Str ("a")
in block <unit> at <unknown file> line 1
Run Code Online (Sandbox Code Playgroud)
但是,在没有类型的情况下进行初始化会起作用,并且似乎最终会产生一个Array:
> my @a = 'a'..'z';
> @a.^name
Array
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
我正在尝试编写一个程序,将XML文件读入先前定义的Rust结构中.
像这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<note name="title">
<body name="main_body">
<layer content_type="something" count="99">
<data id="13">
Datacontent
</data>
</layer>
</body>
</note>
Run Code Online (Sandbox Code Playgroud)
进入:
struct Note {
name: String,
Body: Body
}
struct Body {
name: String,
layers: Vec<Layer>,
}
struct Layer {
content_type: String,
count: u8,
data: Vec<Data>,
}
struct Data {
id: u8,
// Datacontent?
}
Run Code Online (Sandbox Code Playgroud)
我查看了xml-rs,因为它目前似乎是最流行的XML库.作为Rust的新手,我很难搞清楚如何执行这项任务.
使用Windows,我安装了Rakudo Star和Git并确保C:\rakudo\bin
并且C:\rakudo\share\perl6\site\bin
位于Path环境变量中。
现在,perl6
随后在Git Bash中键入会产生command not found
错误,而命令确实在powershell
和中起作用cmd
。echo $PATH
在Git Bash中输入内容再次确认上面的文件夹也在我的path变量中。
如何perl6
在Git Bash中使用该命令?
注意:使用moar
(moar.exe)与perl6
在Git Bash中相同的文件夹中。同时点击Tab会显示的自动完成建议moar
,但不会perl6
。
我得到以下代码来尝试打开和写入文件(不加急):
sub MAIN {
my $h = open 'somefile.txt', :w, :a;
for 1..4 {
$fh.put: "hello";
}
$fh.close;
}
Run Code Online (Sandbox Code Playgroud)
我期望的是,每次运行时,都应在文件中附加4行“ hello”。但是,它似乎仍会覆盖该文件,在运行2次或更多次后,仍然只有4行。
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello
$ perl6 opening.p6
$ cat somefile.txt
hello
hello
hello
hello
Run Code Online (Sandbox Code Playgroud)
添加或删除:a
或:append
似乎不影响此行为,我缺少什么?
让我们说我得到了以下非常基本的例子:
f :: Either Int String -> IO ()
Run Code Online (Sandbox Code Playgroud)
以及函数g :: Int -> IO ()
和函数g' :: String -> IO ()
我基本上想要实现f
作为"选择器"调用g
或g'
取决于它的输入,以便将来我只需要工作f
因为我知道我的程序只会遇到Int或串.
这种使用方式Either
有意义吗?该约定似乎主要用于错误和异常处理.
如果它确实有意义,那么实施这样一个例子的好方法或最佳实践是什么?我听过/读过关于case
bifunctors的信息.
如果没有:haskell处理不同输入类型可能性的方法是什么?或者这是从一开始就应该避免的事情?
假设我有一个向量V
,我想将这个向量转换为多个m x n
矩阵,或者m x n
从该向量 V 获取多个矩阵。对于最基本的示例:转换V = collect(1:75)
为 3 个5x5
矩阵。
据我所知,这可以通过首先使用 reshapereshape(V, 5, :)
然后循环它来完成。Julia 有没有更好的方法而不使用循环?
如果可能,最好是可以在行优先和列优先结果之间轻松更改的解决方案。
我试图通过在Racket中的http/post发送一个字符串,这是我在阅读Racket HTTP客户端文档后到目前为止所尝试的
#lang racket
(require net/http-client)
(define
myUrl "https://something.com")
(http-conn-send!
(http-conn-open
myUrl
#:ssl? #t)
#:version "1.1"
#:method "POST"
#:data "Hello")
Run Code Online (Sandbox Code Playgroud)
但是有了这个,我收到以下错误:
tcp-connect: connection failed
detail: host not found
address: https://www.w3.org/
port number: 443
step: 1
system error: nodename nor servname provided, or not known; errno=8
Run Code Online (Sandbox Code Playgroud)
我尝试了几个不同的地址.
我是新手一般的编程和编程,无法弄清楚我错过了什么.
我在懒惰的列表上阅读perl6intro,这让我对某些事情感到困惑.
举个例子:
sub foo($x) {
$x**2
}
my $alist = (1,2, &foo ... ^ * > 100);
Run Code Online (Sandbox Code Playgroud)
会给我(1 2 4 16 256)
,它将相同的数字直到它超过100.我希望这给我(1 4 9 16 25 .. )
,所以不是平方相同的数字,将数字提前x
1(或另一个给定的"步骤"),foo x
等等.
在这种特定情况下是否有可能实现这一目标?
我在懒惰列表上的另一个问题如下:在Haskell中,有一个takeWhile函数,在Perl6中是否存在类似的东西?
我正在尝试学习如何使用Haskell通过HTTP/POST发送简单的字符串http-conduit
(以便它也适用于https),从文件中读取目标URL,但对我来说似乎仍然有点压倒性.
基本上相当于我在这里学习使用Racket: 在Racket中发送HTTP POST
有人可以给我一个小的或最基本的例子吗?
post haskell functional-programming network-programming http