小编For*_* O.的帖子

使用 Kotlin 多平台进行文件 IO

我想在 mingwX64 Windows(可能还有其他平台)上执行一些基本的文件系统操作:打开、关闭、读取、重命名、获取元数据、列出目录中的文件。

我找到了一个承诺实现此功能的项目:KotlinxIO。然而,多年来并没有取得任何进展。

还有其他替代方案或解决方法吗?

kotlin kotlin-native kotlin-multiplatform

13
推荐指数
2
解决办法
8885
查看次数

如何在 Kakoune 中拉到系统剪贴板?

如果我在kakoune 中猛拉一个词,我如何将它粘贴到另一个编辑器(例如 gedit)中?

我已阅读如何从(并复制到)系统剪贴板制作 vim 粘贴?因为 vim 非常相似,但 kakoune 没有任何*寄存器。

yank kakoune

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

Haskell:类型fa实际意味着什么?

我偶然发现了fold ((,) <$> sum <*> product)带有类型签名的这段代码,:: (Foldable t, Num a) => t a -> (a, a)我完全迷失了.

我知道它的作用,但我不知道怎么做.所以我试着把它分成几小块:

?: :t (<$>)
(<$>) :: Functor f => (a -> b) -> f a -> f b
?: :t (,)
(,) :: a -> b -> (a, b)
?: :t sum
sum :: (Foldable t, Num a) => t a -> a
Run Code Online (Sandbox Code Playgroud)

一切都很好,只是基本的东西.

?: :t (,) <$> sum
(,) <$> sum :: (Foldable t, Num a) => t a …
Run Code Online (Sandbox Code Playgroud)

haskell functor

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

如何使用函数的monoid实例?

今天我尝试通过monoid类型类减少函数列表,但是由于某种原因,结果函数期望它的参数是Monoid的一个实例.

GHCI告诉我,类型mconcat [id, id, id, id]Monoid a => a -> a.但我希望它是a -> a.

怎么了?

haskell monoids

5
推荐指数
1
解决办法
558
查看次数

处理是Haskell中的半封闭错误?

我在GHCI中收到此错误:

*** Exception: <stdin>: hGetLine: illegal operation (handle is semi-closed)

运行此代码后:

main = do
    interact $ unlines . fmap proccess . take x . lines
    readLn :: IO Int
Run Code Online (Sandbox Code Playgroud)

而且我很确定原因是什么take x.有没有更好的方式来读取使用交流输入的X线或者interact只是一个单独的播放器?

io haskell handle

4
推荐指数
1
解决办法
645
查看次数

Haskell:GHC会对此进行优化吗?

GHC可以简化id = (\(a, b) -> (a, b)).(\(a, b) -> (a, b))id = \(a, b) -> (a, b)

更复杂的情况呢?

id (Just x) = Just x
id Nothing = Nothing

map f (Just x) = Just (f x)
map _ Nothing  = Nothing
Run Code Online (Sandbox Code Playgroud)

GHC会简化id . mapmap

我试图使用普通的beta缩减,但看起来这些术语是不可简化的,因为讨厌的模式匹配.

因此,我很好奇GHC的优化技术是如何处理的.

haskell ghc

4
推荐指数
1
解决办法
224
查看次数

Haskell:是否可以使用数字作为数据构造函数?

我有一些数据,我想测试一下,存储它们的最佳方法是什么.我正在决定二进制,四进制,八进制和十六进制数据类型.

检查哪个是最好的唯一方法是在我的算法中使用它们,然后查看结果.

到目前为止我的实现看起来像这样:

{-# LANGUAGE DeriveAnyClass #-}

data Binary = O | I         
              deriving (Bounded, Enum, Eq, Ord, Show)
data Octal  = OA | OB | OC | OD | OE | OF | OG | OH 
              deriving ( ... )
Run Code Online (Sandbox Code Playgroud)

但是我想要更多的通用构造函数data Binary = 0 | 1.有可能吗?

haskell

3
推荐指数
1
解决办法
366
查看次数

ANSI C:如何在结构域上进行抽象?

我有一个图像表示为RGB像素的2D数组.

typedef struct {
    char R;
    char G;
    char B;
} RGB;
Run Code Online (Sandbox Code Playgroud)

以及为该图像计算每个像素的新颜色的函数:

RGB new_color(RGB image[][], int r, int c){
    RGB color;
    color.R = image[r][c].R + image[r+1][c].R + image[r-1][c].R + image[r][c+1].R + image[r][c-1].R;
    color.G = image[r][c].G + image[r+1][c].G + image[r-1][c].G + image[r][c+1].G + image[r][c-1].G;
    color.B = image[r][c].B + image[r+1][c].B + image[r-1][c].B + image[r][c+1].B + image[r][c-1].B;
    return color;
}
Run Code Online (Sandbox Code Playgroud)

是否可以删除new_color正文中的代码重复?换句话说,抽象出RGB数据结构的字段名称?

c c89

3
推荐指数
1
解决办法
154
查看次数

Sbt:如何为所有项目定义任务?

我希望能够为我的所有项目定义一个任务sbt.build

lazy val project1 = project.in(`.` /  "project1)
   ...
lazy val project2 = 
   ...

lazy val upload = taskKey[Unit]("upload a config file from project to server)
upload := { 
   val file = baseDirectory.value / "config.json"
   ...
}
Run Code Online (Sandbox Code Playgroud)

问题在于此定义仅在调用时有效sbt upload,但我希望能够为每个子项目调用它:sbt project1/uploadsbt project2/upload

有没有办法做到这一点,而无需使用inputKey

scala sbt

3
推荐指数
1
解决办法
334
查看次数

Scala:Context.eval 中的代码可以参考什么?

看来 的输入Context.eval只能引用来自不同编译单元的值:

// project 1
object Z {

  val foo = "WOOF"

  def impl(c: Context)(x: c.Expr[String]) = {
    val x1 = c.Expr[String](c.untypecheck(x.tree.duplicate))
    println(s"compile-time value is: ${c.eval(x1)}")
    x
  }
  def test(x: String) = macro impl
}

// project 2
object Y {
  val foo = "GOOF"
  val boo = Z.test(Z.foo)
}


println(Y.boo)
Run Code Online (Sandbox Code Playgroud)

打印出"WOOF",但如果我将 boo 替换为val boo = Z.test(Y.foo),则会出现以下编译错误:

Error:(32, 29) exception during macro expansion:
java.lang.ClassNotFoundException: Y$
at scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:72)
...
Run Code Online (Sandbox Code Playgroud)

有什么办法可以解决这个问题吗?我知道用 quill.io 定义的查询可以引用同一范围的方法,但我无法找到他们用来允许它的技巧。

macros scala scala-macros quill.io

3
推荐指数
1
解决办法
317
查看次数

即使我为MyType实现了`From <&str>,但是特性绑定`&str:From <MyType>`也不满意.

我试图执行的帮助下运行长度编码FromInto.我的想法是,我将只实施并免费from获得into实施.

extern crate regex;

use regex::Regex;

struct RLE(pub String);

impl<'a> From<&'a str> for RLE {
    fn from(s: &str) -> Self {
        let reg = Regex::new(r"(\d*)([\w\s])").unwrap();
        let mut accum = String::new();
        for c in reg.captures_iter(s) {
            let n = c.get(1).unwrap().as_str().parse::<usize>().unwrap_or(1);
            let c = c.get(2).unwrap().as_str();
            accum.push_str(&c.repeat(n));
        }
        RLE(accum)
    }
}
Run Code Online (Sandbox Code Playgroud)

解码("2ab3c")=>"aabccc"

pub fn decode(s: &str) -> String {
    let RLE(string) = RLE::from(s);
    string
}
Run Code Online (Sandbox Code Playgroud)

encode("aabccc")=>"2ab3c"

pub fn encode(s: &str) -> String {
    let string: …
Run Code Online (Sandbox Code Playgroud)

rust

1
推荐指数
2
解决办法
304
查看次数