小编p6s*_*eve的帖子

是否有一个简写,其中一个或多个位置匹配多个签名中的类型

我有这个;

multi sub infix:<+> ( Measure:D $left, Measure:D $right ) is equiv( &infix:<+> ) is export { 
    my ( $result, $argument ) = inf-prep( $left, $right );
    return $result.add( $argument );
}
multi sub infix:<+> ( Measure:D $left, $right ) is equiv( &infix:<+> ) is export { 
    my ( $result, $argument ) = inf-prep( $left, $right );
    return $result.add( $argument );
}
multi sub infix:<+> ( $left, Measure:D $right ) is equiv( &infix:<+> ) is export { 
    my ( $result, …
Run Code Online (Sandbox Code Playgroud)

perl6

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

在`polars::prelude::DataFrame`中找不到lazy()方法

我正在 Rust 中为 Polars 编写一个外部库(供Raku::Dan使用),并且想通过调用 df.lazy() 为 LazyFrame 对象获取一个不透明容器。

use polars::prelude::*;//{CsvReader, DataType, DataFrame, Series};
use polars::prelude::{Result as PolarResult};
use polars_lazy::prelude::*;

// LazyFrame Container

pub struct LazyFrameC {
    lf: LazyFrame,
}

impl LazyFrameC {
    fn new(ptr: *mut DataFrameC) -> LazyFrameC {
        LazyFrameC {
            lf: (*ptr).df.lazy(),
        }
    }
}
// extern functions for LazyFrame Container
#[no_mangle]
pub extern "C" fn lf_new(ptr: *mut DataFrameC) -> *mut LazyFrameC {
    let df_c = unsafe {
        assert!(!ptr.is_null());
        &mut *ptr
    };

    Box::into_raw(Box::new(LazyFrameC::new(ptr)))
}
Run Code Online (Sandbox Code Playgroud)

不起作用,给出错误:

error[E0599]: …
Run Code Online (Sandbox Code Playgroud)

rust raku rust-polars

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

更简洁的方法来设置perl6中的正则表达式的默认值

要将例如mins-2拆分为单位名称和顺序的组成部分,这就是我想要的

sub split-order ( $string ) {
    my Str $i-s = '1';
    $string ~~ / ( <-[\-\d]>+ ) ( \-?\d? ) /;
    $i-s = "$1" if $1 ne '';
    return( "$0", +"$i-s".Int );
}
Run Code Online (Sandbox Code Playgroud)

似乎perl6应该能够将其打包成更加简洁的措辞.我需要默认顺序为1,其中没有尾随数字.

我可能有点懒,不与行结尾匹配$.试图避免返回Nil,因为这对调用者没用.

任何有更好转变的人?

perl6

6
推荐指数
2
解决办法
109
查看次数

Perl6使用Proxy来触发属性访问

我试图实现对perl6 Class属性的写访问的触发器.我无法弄清楚错误的原因......

...我从如何在Perl6中编写自定义访问器方法获得了这个概念

  1 #!/usr/bin/env perl6
  2 
  3 class MeasureSP {
  4 
  5     has Real $!value;
  6     has Str  $.units;
  7 
  8     submethod BUILD( :$!value, :$!units ) {}
  9 
 10     method value( Real $newval? ) is rw {
 11         return Proxy.new:
 12             FETCH => sub ($)           { $!value },
 13             STORE => sub ($, $newval)  { $!value = $newval },             
 14     }   
 15     
 16 }   
 17 my MeasureSP $m-sp = MeasureSP.new( value => 23, units => 'metres' …
Run Code Online (Sandbox Code Playgroud)

perl6

6
推荐指数
1
解决办法
90
查看次数

刷新预编译的perl6模块的最佳方法是什么?

我正在尝试重构一些代码。我的方法(使用vi)是将旧库从/ lib复制到/ lib2。这样,我可以破解大部分内容,但仍然有一个重构框架。

所以我继续将mymain.p6标头从更改use lib '../lib';use lib '../lib2';。然后我删除其中的几行,../lib2/mylibrary.pm6并确保:w正在执行我所期望的。

想象一下,尽管我的程序尽管已被大量删除,但仍然可以正常运行,但我感到惊讶。当我rm -R / lib时它甚至可以工作,所以那里的任何东西都没有持久。

我有机会躺在旧的lib模块的precomp周围吗?如果是这样,我怎么冲洗它?

这是基于实现Perl 6.d的MoarVM版本2019.03构建的Rakudo Star版本2019.03.1。

pre-compilation perl6 raku

6
推荐指数
1
解决办法
110
查看次数

MixHash 很有用 - 但需要一些说明

这是对Baggy add (+) work on MixHash weights的(有点迟到的)跟进吗?. MixHash 是一个很好的单位比较工具 - 因为我知道我的 dmix => ("m"=>2,"kg"=>1,"s"=>-2).MixHash 对于 'kg m2 per s2' 和 'kg.m^2/s^2' 等等。

这是我寻求的三重清晰度:

  1. 我仍然需要将 MixHash (+) MixHash 的结果强制转换为 MixHash(默认结果是不可变的 Mix) - 一个或多个 MixHashen 的操作结果是否仍然意图成为 MixHash?
  2. 结果如果 MixHash (+) Any 潜入一个顽皮的不需要的元素 dmix => ("m"=>2,"kg"=>1,"s"=>-2,"MixHash"=>1) - 这是一个错误,对。[我已经通过将通货紧缩默认设置为空集来修补...... MixHash $.dmix is rw = ?.MixHash;]
  3. 文档https://docs.raku.org/language/setbagmix将 (+) 显示为 Baggy 添加,但 (-) 显示为 Set Difference。当我做 MixHash (-) MixHash 我似乎得到了宽松的减法 - 这就是我想要的。希望这是文档中的疏忽?

让我知道我是否可以提供代码或应该提交错误报告...

units-of-measurement raku

6
推荐指数
1
解决办法
63
查看次数

raku run('find .', :out); 不适用于 MacOS

在围绕这个问题进行测试时,raku 可以避免这种格式错误的 UTF-8 错误吗?有人建议我尝试使用内置的 MacOS 'find '。带有 raku 运行功能的命令。

1 #!/usr/local/bin/raku
2 
3 shell('find .');                    #works
4 
5 my $proc = run('find .', :out);     #fails with
6 $proc.out.lines(:close).say;        #() [ie. ().Seq] 
Run Code Online (Sandbox Code Playgroud)

结果证明 raku shell 工作正常,但 raku run 失败。我不完全确定这是否是 MacOS 上 raku 的错误(如果是,我很乐意报告)......?

[MacOS Catalina 10.15.17 ... 欢迎来到™ v2020.10。实现™ 编程语言 v6.d。基于 MoarVM 版本 2020.10。]

raku

6
推荐指数
1
解决办法
58
查看次数

MacOS 上的 Raku Comma IDE 无法启动

我从之前的SO 中取得了一些进展,但遇到了一个新错误......

Internal error. Please refer to http://jb.gg/ide/critical-startup-errors

java.lang.ExceptionInInitializerError
    at com.intellij.ide.IdeEventQueue.<clinit>(IdeEventQueue.java:80)
    at com.intellij.idea.StartupUtil.replaceSystemEventQueue(StartupUtil.java:749)
    at com.intellij.idea.StartupUtil.patchSystem(StartupUtil.java:733)
    at com.intellij.idea.ApplicationLoader.executeInitAppInEdt(ApplicationLoader.kt:59)
    at com.intellij.idea.ApplicationLoader.access$executeInitAppInEdt(ApplicationLoader.kt:1)
    at com.intellij.idea.ApplicationLoader$initApplication$1$1.run(ApplicationLoader.kt:366)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.Runnable java.awt.event.InvocationEvent.runnable accessible: module java.desktop does not "opens java.awt.event" to unnamed module @5fdea98c
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
    at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
    at com.intellij.util.ReflectionUtil.findFieldInHierarchy(ReflectionUtil.java:153) …
Run Code Online (Sandbox Code Playgroud)

comma raku

6
推荐指数
1
解决办法
108
查看次数

Nativecall 段错误从 Rust 获取元组

根据Rust FFI Omnibus,以下内容应该有效。

\n

这是一个名为“foo”的 Rust cdylib,lib.rs用 Cargo build 制作...

\n
use std::convert::From;\n\n// Rust FFI Omnibus: Tuples \n// http://jakegoulding.com/rust-ffi-omnibus/tuples/\n\n// A Rust function that accepts a tuple\nfn flip_things_around_rust(tup: (u32, u32)) -> (u32, u32) {\n    let (a, b) = tup;\n    (b + 1, a - 1)\n}\n\n// A struct that can be passed between C and Rust\n#[repr(C)]\npub struct Tuple {\n    x: u32,\n    y: u32,\n}\n\n// Conversion functions\nimpl From<(u32, u32)> for Tuple {\n    fn from(tup: (u32, u32)) -> Tuple {\n        Tuple …
Run Code Online (Sandbox Code Playgroud)

tuples repr rust nativecall raku

6
推荐指数
0
解决办法
203
查看次数

Raku NativeCall 到 Rust FFI CArray 大小限制 - SegFault

下面是我的代码的最小(?)可重现示例。这是 WIP Raku 模块 Dan::Polars 压力测试/基准测试的第一步。

\n

在 Rust 中,我用这段代码创建了一个 libmre.so

\n
  1 use libc::c_char;\n  2 use libc::size_t;\n  3 use std::slice;\n  4 use std::ffi::*; //{CStr, CString,}\n  5 \n  6 //  Container\n  7 \n  8 pub struct VecC {\n  9     ve: Vec::<String>,\n 10 }   \n 11 \n 12 impl VecC {\n 13     fn new(data: Vec::<String>) -> VecC               \n 14     {   \n 15         VecC {\n 16             ve: data,\n 17         }   \n 18     }   \n 19     \n 20     fn show(&self) {\n 21         println!{"{:?}", …
Run Code Online (Sandbox Code Playgroud)

ffi rust raku

6
推荐指数
1
解决办法
139
查看次数