Perl 6 - 哪个范式是概念角色和副词来自哪个?

use*_*991 9 perl6 raku

在阅读某些文件后,我注意到他们使用的课程,功能,符号,方法,以及我作为电子工程师所知道的事情.然后,他们有我从未听说过的概念,例如角色和副词.如果我不理解命名法,我不能很好地理解文档,可能会得到非常意外的结果,也不能很好地利用语言.
我无法在任何地方找到他们的定义,包括StackOverflow中的标签......任何指针都会受到赞赏.

rai*_*iph 11

哪个范式做概念角色和副词来自哪个?

角色

角色是一个OO概念.

它们是P6对特征概念的概括,特别是它们与吱吱声(smalltalk)一起出现的概念化.

副词

P6中的副词与英语等自然语言中的副词直接类似.

P6中的副词是命名参数/参数,它们修改例程的行为而不是作为输入本身.

副词经常使用普通的键/值对语法指定,但是,与自然语言中的副词类似,P6中的副词可以出现在各种方便的句法和语义形式中:

m:i/ foo /
Run Code Online (Sandbox Code Playgroud)

:i"忽略大小写"副词传递给match(m)例程.


mor*_*itz 8

"副词"特别借鉴了人类语言 - 拉里沃尔是一名受过训练的语言学家.同样,我们倾向于将术语称为名词,将运算符称为动词.


pio*_*ojo 7

在语言中,副词描述了动词(动作)是如何发生的.走.仔细编写功能.耐心调试.对于运算符和函数,Perl 6副词的行为类似于语言副词:它们描述了如何完成该功能.要使用latin1编码打开文件进行阅读:

my $fh = $path.open(:r, :enc('latin1'));
Run Code Online (Sandbox Code Playgroud)

如果没有这些副词,open仍然会打开文件,但不会处于读取模式和不同的编码.

对于函数,所有副词都是命名参数.但命名参数并不总是影响函数的运行方式.它们可能只是通过名称传递的参数,通常是可选的.从概念上讲,这些不是副词.它们看起来像副词,但我们倾向于不称它们为副词.

my AuthToken .= new(username => "fred", :$password);
Run Code Online (Sandbox Code Playgroud)

  • 嗨piojo.这是一个非常好的基准.:)差异是例程的*声明*和该例程的*call*之间的差异.*参数*是签名的一部分,它是*compile-time*中例程的*声明*的一部分.*参数*是"参数列表"的一部分,它是运行时**例程***的一部分.成功调用会导致被调用例程的参数被*绑定到*值*,这些*值*在*run-time*中作为*参数*"传递".现在我写完了,我要求你在这方面保留你的答案.现在民众可以阅读这个评论.:) (2认同)

tim*_*imo 6

也许perl 6文档站点上的词汇表有助于:

https://docs.perl6.org/language/glossary

此外,还有一个专门针对角色的文档部分:https://docs.perl6.org/language/objects#Roles

  • 为了节省民间搜索,这里是[副词的词汇表条目](https://docs.perl6.org/language/glossary#index-entry-Adverb). (3认同)