小编oly*_*lyk的帖子

Haskell 中的语法糖、懒惰和通过索引访问的列表元素之间的关系是什么?

Haskell 列表是通过对 的一系列调用构建的cons,在对语法进行脱糖之后:

Prelude> (:) 1 $ (:) 2 $ (:) 3 []
[1,2,3]
Run Code Online (Sandbox Code Playgroud)

列表是不是因为它们是这样一个函数调用序列而变得懒惰?如果这是真的,运行时如何在调用函数链时访问这些值?按索引访问也是一种语法糖吗?我们怎么能用其他方式表达它,比这更不加糖?:

Prelude> (!!) lst 1
2
Run Code Online (Sandbox Code Playgroud)

这里的基本问题可能是:

列表是 Haskell 中的基本实体,还是可以表示为更基本概念的组合?

是否有可能在最简单的 lambda 演算中表示列表?

我正在尝试实现一种语言,其中列表是在标准库中定义的,而不是作为直接硬连线在解析器/解释器/运行时中的特殊实体。

haskell functional-programming language-design lazy-evaluation

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

为什么我不能使用 case 类的构造函数作为函数在 map() 中使用

编译器不接受将元组直接传递给构造函数,如最小示例所示:

scala> case class A(a:Int, b:Int)
defined class A

scala> List((1, 2)).map(A)
<console>:14: error: type mismatch;
found   : A.type
required: ((Int, Int)) => ?
    List((1, 2)).map(A)
                        ^

scala> List((1, 2)).map(A _)
<console>:14: error: _ must follow method; cannot follow A.type
    List((1, 2)).map(A _)
                        ^
Run Code Online (Sandbox Code Playgroud)

Scala 解析器组合器具有^^用于此的运算符。fastparse 库中有类似的东西吗?

lambda scala parser-combinators case-class fastparse

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

是否可以将 Scala 编译(转译)到浏览器,同时保持解释用户动态提供的 Scala 代码的能力?

我知道 Scala.js 可以转译为 JS,但它不支持反射。有什么方法可以解释用户提供的 Scala 代码而不重复到服务器端?

如果以这种方式解释 Scala 是不可能的,是否可以从 Scala 代码(即从将被转译的 Scala 代码)运行用户提供的 JavaScript 代码?

javascript reflection scala transpiler scala.js

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

如何删除 NaN 数量最多的 DataFrame 行?

当我们知道要保留的非 NaN 数量时,本网站中的 Pandas 和其他问题/答案为这种情况提供了解决方案。如何有效地仅删除最差的行,或者如果有多个行是最差的行。下面的一些示例展示了如何通过设置轴来删除列,也可以删除行。然而,我们需要指定要保留多少个非 NaN。

>>> import numpy as np
>>> df = pd.DataFrame([[1,np.nan,1,np.nan], [1,1,1,1], [1,np.nan,1,1], [np.nan,1,1,1]], columns=list('ABCD'))
     A    B  C    D
0  1.0  NaN  1  NaN
1  1.0  1.0  1  1.0
2  1.0  NaN  1  1.0
3  NaN  1.0  1  1.0

>>> df.dropna(thresh=3, axis=1)
     A  C    D
0  1.0  1  NaN
1  1.0  1  1.0
2  1.0  1  1.0
3  NaN  1  1.0
Run Code Online (Sandbox Code Playgroud)

或者完全删除它们:

>>> df.dropna(axis=1)
   C
0  1
1  1
2  1
3  1
Run Code Online (Sandbox Code Playgroud)

请注意, 我在下面提供了更多背景信息。虽然欢迎提供具体解决方案的提示,但我更喜欢帖子标题中所述的有关一般情况的答案。

上下文 …

python nan missing-data dataframe pandas

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

如何模式匹配案例类的父特征(或类或对象)?

我试图在单个case子句中匹配所有二元运算符,但以下代码给出了错误:

object BinOp is not a case class, nor does it have a valid unapply/unapplySeq member
Note: def unapply(a: AST.this.Expr, b: AST.this.Expr): Option[(AST.this.Expr, AST.this.Expr)] exists in object BinOp, but it cannot be used as an extractor as it has more than one (non-implicit) parameter.
Run Code Online (Sandbox Code Playgroud)

遍历树的核心代码:

tree match {
    case ... other ... cases
    case BinOp(a, b) => traverse(a), traverse(b)
}
Run Code Online (Sandbox Code Playgroud)

AST 类如下:

sealed trait Expr

case class Num(value: java.lang.Number) extends Expr

sealed trait BinOp extends Expr {
  val …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching abstract-syntax-tree case-class

0
推荐指数
1
解决办法
80
查看次数