小编Kon*_*ele的帖子

Haskell中的monadic IO构造只是一个约定吗?

Haskell中的monadic IO构造只是一个约定,还是有一个实现原因呢?

你能不能只用FFI进入libc.so而不是你的IO,并跳过IO Monad组件?

无论如何它会起作用,或者结果是不确定的,因为Haskell评估懒惰或其他东西,比如GHC是IO Monad的模式匹配,然后以特殊方式或其他方式处理它.

真正的原因是什么?最后你最终会产生副作用.那么为什么不这么简单呢?

haskell

39
推荐指数
3
解决办法
3397
查看次数

是否有一些模型可用于理解 Raku 中的容器、引用、原始、rw、\?

在 perl5 中,您可以将其\视为一个指针,并通过以特定的 sigil 或->. 您还拥有使符号显式的 typeglob。在 perl5 中,底层的 C 代码结构将提供一个与语言语法相关的良好模型。

在 Raku 中,您有一组概念,例如:容器(和非容器?)、绑定、使用=and赋值、:=参数中的不同特征rawrw和和\(似乎与 perl5 无关\?)。

是否有一些基础模型可以用来确定我在代码中的某个点实际使用的内容以及我有哪些选项?

binding reference assignment-operator raku

11
推荐指数
2
解决办法
124
查看次数

Raku 的 Unicode 字符文档在哪里,例如 "»" ?

Raku 使用 Unicode 字符,如“ »”。很难搜索有关这些字符的信息,因为它们似乎无法在 Google 中搜索到,而且我真的不知道它们的名字。例如,类似于“ »”中的内容:

$/.make: $<pair>».made
Run Code Online (Sandbox Code Playgroud)

是否有Raku 中使用的所有特殊 Unicode 字符的描述性列表?

operators raku

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

Haskell token "#"

What does the # token mean and how is it used?

newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))
Run Code Online (Sandbox Code Playgroud)

I came across this here and wonder where this type is actually defined or weather this is some syntax of a internal type that is ultimately defined in C?

haskell

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

带有自定义词法分析器的 Raku 语法

是否有可能为 raku 语法定义自定义词法分析器,即将字符串转换为 int id + value 流?我在玩语法结构。

规则看起来很直观,因为它们可能会在递归下降解析器中转换为函数。但是令牌和正则表达式我希望能够使用显式令牌 ID 和接口将它们分解为名称,以便我可以编写自己的词法分析器?

rakudo raku

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

如何转储 MoarVM 字节码

我想知道如何调试 Moarvm 字节码。是否有文档描述例如如何将 raku 转换为 moarvm 以及如何转储生成的字节码。如果我尝试运行:

rakudo-m --target=mbc c.p6 
===SORRY!===
Cannot dump this object; no dump method
Run Code Online (Sandbox Code Playgroud)

我在某处读到了“--dump”开关,但这似乎不可用。我从 github 自定义编译 rakudo/nqp/moarvm。

moarvm raku

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

在emacs中混合组织模式和c模式

我想在Emacs中混合使用org-modec-mode.注释中的所有内容都 应该是org-mode,其余部分应该是默认的主模式 c-mode:

/*
Org-mode here
** Section 1
  text
** Section 2
  text
Org-mode should end here
*/

func1()
{
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用nXhtml多主模式,我猜其他模式也支持多模式.我现在的问题是,如果我在"第2部分"上键入TAB,那么"第2部分"下方的所有部分都将折叠并变为不可见.但我想包含org-mode折叠/展开到评论部分的区域.TAB应该只折叠/展开直到"*/".

我想知道我怎么能做到这一点?

emacs org-mode c-mode

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

Perl newXS()添加了闭包

我想在一个c ++应用程序中嵌入Perl,并且正在寻找一种通过newXS()从perl调用c ++的方法.除了函数指针之外,我还需要一个自定义指针,指向newXS()创建的CV.指针包含C++上下文.我不想为此使用全局变量.有一个共同的方法来做到这一点?

在更广泛的范围内,问题可能是天气,有可能在newXS()创建的CV中添加闭包,以及在调用c函数时如何引用它.CvPADLIST()似乎是一个完美的地方,但是对于XSubs,当设置PERL_IMPLICIT_CONTEXT时使用它似乎是无效的(在perl的pad.c开头注释.它可以被忽略吗?).还有其他地方我可以放置CV本地数据吗?

c++ perl xs

7
推荐指数
2
解决办法
159
查看次数

我可以编写一个行为像散列的对象吗?

在 Perl 中有tie. Python 支持各种协议,因此对象可以像字典一样运行。Raku 有类似的东西吗?
即我可以定义一个行为像 a 的对象Hash吗?那就是:我可以写成$myobject<key>一个我可以自己指定的例程吗?

object raku

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

如何在 Raku 中动态访问对象中的属性

我想知道如何在运行时通过名称动态访问对象的属性。代替:StrRaku

#!/usr/bin/rakudo                                                                                                                                                                    
                                                                                                                                                                                    
class c0 {                                                                                                                                                                          
    has $!a0 = 1;                                                                                                                                                                      
    has $!a1 = 2;                                                                                                                                                                      
    method access(Str $m) {
        if ($m eq "a0") { return $!a0; }                                                                                                                                                
        if ($m eq "a1") { return $!a1; }                                                                                                                                                
    }
    method set(Str $m, $v) {
        if ($m eq "a0") { $!a0 = $v; }                                                                                                                                                
        if ($m eq "a1") { $!a1 = $v; }                                                                                                                                                
    }                                                                                                                                                                               
}                                                                                                                                                                                   
                                                                                                                                                                                    
my $c = c0.new();                                                                                                                                                                   
$c.set("a0", 3);
$c.set("a1", 4);
say $c.access("a0");                                                                                                                                                                    
say $c.access("a1");       
Run Code Online (Sandbox Code Playgroud)

我想使用一些看起来像伪代码的东西:

class c0 { 
    ... …
Run Code Online (Sandbox Code Playgroud)

attributes object raku

7
推荐指数
2
解决办法
154
查看次数