首页 文章
  • 2 votes
     answers
     views

    在Racket中进行模式匹配时的替代方案

    我想匹配Racket(以前的PLT Scheme)中的以下两个列表之一: '(somename : (_ptr o sometype)) 要么 '(somename : (_ptr io sometype)) 正如您所看到的,唯一的区别是嵌入式列表中的文字“o”和“io” . 我可以看到两种基本方法来做到这一点 . 或者: (match myexpr [(list name ': (...
  • 1 votes
     answers
     views

    Racket中的运行时模式匹配

    如果Racket的 match 宏是一个函数,我可以这样做: (define my-clauses (list '[(list '+ x y) (list '+ y x)] '[_ 42])) (on-user-input (λ (user-input) (define expr (get-form-from-user-input u...
  • 0 votes
     answers
     views

    绑定模式与Racket中的标识符匹配

    有没有一种简单的方法来模仿OCaml中的 as 关键字,如下所示: (match x with |((a,b) as c, d) -> c) 在球拍?我考虑定义语法规则以处理语法 ((exp) as id) ,但后来我遇到了exp的问题,可能有更多的 as 绑定 . 有关如何从表达式中提取所有 as 绑定然后在match子句的表达式中为它们提供本地绑定的任何想法?谢谢!
  • 1 votes
     answers
     views

    球拍图案匹配多次

    新手球拍编码器在这里 . 我有一个xexpr,我希望避免在某些元素之前和之后使用新行,例如 'eq 标记或 'figure 标记 . 假设我有以下内容: (define tx1 '(div (div "this is" "\n\n" (eq "y=x") "\n\n" "my equation"...
  • 19 votes
     answers
     views

    功能中的非详尽模式[重复]

    这个问题在这里已有答案: Better exception for non-exhaustive patterns in case 2个答案 我有这个代码的问题,它应该计算字符串中相同字母的最长子字符串,但是有一个错误: *** Exception: test.hs:(15,0)-(21,17): Non-exhaustive patterns in function countLonges...
  • 0 votes
     answers
     views

    函数声明中的非详尽模式

    我在实现以下功能时遇到困难: type Tabuleiro = [String] type Comandos = String type Comando = String type Coordenadas = String novaCoord :: Tabuleiro -> Comandos -> Coordenadas -> Coordenadas novaCoord l ...
  • 17 votes
     answers
     views

    是否建议在Haskell中始终使用详尽的模式匹配,即使是“不可能”的情况?

    是否建议在Haskell中始终使用详尽的模式匹配,即使是“不可能”的情况? 例如,在下面的代码中,我在foldr的“累加器”上进行模式匹配 . 我完全控制累加器的内容,因为我创建它(它不作为输入传递给我,而是在我的函数中构建) . 因此,我知道某些模式永远不应该匹配它 . 如果我努力永远不会得到“模式匹配是非穷尽的”错误,那么我会为它设置一个模式匹配,只是错误的消息“这个模式应该永远不会发生” ....
  • 1 votes
     answers
     views

    Haskell函数中的非穷举模式匹配

    这是我的功能 . toResult :: [SqlValue] -> IO Course toResult [ fromSql -> courseid, fromSql -> title, fromSql -> name, fromSql -> version, fromSql -> cdate, fromSql -> f...
  • 0 votes
     answers
     views

    这些模式对我来说看起来很详尽,“非详尽模式错误”?为什么?

    问题 在从Haskell书中记笔记时,此代码示例应该返回: Left [NameEmpty, AgeTooLow] ,但它只返回第一个案例 Left [NameEmpty] . 然后,当我将函数 mkPerson2 结果传递给它应返回 Right Person _ _ 时,我得到一个“非详尽模式```错误 . 我已经查看了这段代码很长一段时间了,但它对我来说是正确的 . 我在这里错过了什么?关于...
  • 3 votes
     answers
     views

    模式匹配并非详尽无遗

    我正在尝试创建一个函数,从整数列表中消除给定Integer的倍数,形式为 multiples x [y] ,其中x是给定的Integer,y是列表 . 这就是我所拥有的: multiples :: Integer -> [Integer] -> [Integer] multiples a [] = [] multiples a [b] = filter (\l -> l `mod...
  • 7 votes
     answers
     views

    Haskell模式匹配:可读性和性能

    我正在阅读learn you a haskell教程,我一直在嘲笑作者给出的一些例子 . 例如,他重新实现zip如下: zip' :: [a] -> [b] -> [(a,b)] zip' _ [] = [] zip' [] _ = [] zip' (x:xs) (y:ys) = (x,y):zip' xs ys 他对所有其他例子采用了类似的方法,他将最具体的模式放在第一...
  • 2 votes
     answers
     views

    Haskell wikibook中的无可辩驳/懒惰模式练习

    在这里的一半...... https://en.wikibooks.org/wiki/Haskell/Laziness ...是一个练习,询问使用无可辩驳模式的 head 函数的替代实现的更改的影响 . 它提供了 head' 的定义如下,注意由于第一个等式的无可辩驳的匹配,它将始终返回 undefined : head' :: [a] -> a head' ~[] = undefin...
  • 0 votes
     answers
     views

    Haskell:模式匹配(x:_):为什么列表头限于x?

    只是在这里与Haskell挣扎......我的术语非常糟糕,鉴于我的母语不是英语,进行正确的搜索有点复杂:P我正在关注一些haskell教程/书籍(了解你一个Haskell,Real World Haskell,Happy Learn Haskell,也是一个邮件列表,以及一些随机页面),现在我已经停在这里: head' :: [Char] -> Char head' (x:_) = x ...
  • 0 votes
     answers
     views

    Haskell:功能上的非详尽模式

    我得到以下代码的非详尽模式异常 --determine which list is longer longer::[a]->[a]->Bool longer [] [] = False longer _ [] = True longer (_:[]) (_:[]) = False longer (_:xs) (_:ys) = longer xs ys 我不明白我在做错了什么 .
  • 1 votes
     answers
     views

    函数中的非穷举模式(Haskell)[重复]

    这个问题在这里已有答案: Non exhaustive pattern in function in GHCi 2个答案 How do I use multiple where clauses in GHCi? 2个答案 Function definiton by special cases in GHCi 2个答案 我有两个代码片段引发相同的错误: Prelude> sum...
  • 2 votes
     answers
     views

    如果以前找到其他字符,则匹配字符

    我想在一个正则表达式中匹配c样式注释 . 对于前者 int i /* ABC 123 */ int i // ABC 123 我能写的是 (.*?)(?:/\\*|//)\\s*(ABC)\\s*(\\d)+\\s* 这只是匹配 int i /* ABC 123 or int i // ABC 123 在正则表达式中是否有一种方法我告诉我是否在我的字符串中有/ 然后 /应该在那里,如果它以...
  • 7 votes
     answers
     views

    再次计算重叠的正则表达式匹配

    如何使用Python获取 overlapping regex 匹配的数量? 我已经阅读并尝试了this,that和其他一些问题的建议,但发现没有一个可以用于我的方案 . 这里是: 输入示例字符串: akka 搜索模式: a.*k 一个正确的函数应该产生 2 作为匹配数,因为有两个可能的结束位置( k 个字母) . 模式也可能更复杂,例如 a.*k.*a 也应该在 akka 中匹配两次(...
  • 1 votes
     answers
     views

    使用regexp从文本文件中提取数字

    我试图创建一个读取文本文件input.txt的python脚本,然后扫描该文件中的所有电话号码,并将所有匹配的电话号码写回output.txt 让我们说文本文件是这样的: 嘿,我的号码是1234567890,另一个号码是91-1234567890 . 但如果这些都不可用,您可以致电91 5645454545(或)发送电子邮件至abc@xyz.com 它应匹配 1234567890 , +91-...
  • 4 votes
     answers
     views

    Kotlin when()局部变量介绍

    假设我有一个名为 doHardThings() 的昂贵函数,它可以返回各种不同的类型,我想根据返回的类型采取行动 . 在Scala中,这是 match 构造的常见用法: def hardThings() = doHardThings() match { case a: OneResult => // Do stuff with a case b: OtherResult ...
  • 1 votes
     answers
     views

    R:如何根据特定规则从数据框中选择数据,并将数据作为新列添加到现有数据框中

    我有两个数据帧df1和df2 . df1 <- data.frame(x1=c("A35", "A41", "A49"), x2=c(8, 24, 33), x3=c(15, 63, 54)) df2 <- data.frame(y1=c("A...
  • 5 votes
     answers
     views

    模式匹配以查找列表的最后一个元素

    我试图使用模式匹配找到scala中列表的最后一个元素 . 我试过以下代码 def last[A](list: List[A]):A = list match { case head :: Nil => head case head :: tail => last(tail) case _ => Nil } 最后一种情况,即case _ => Nil因类型不匹配而抛...
  • 4 votes
     answers
     views

    如何解决此Scala函数参数类型擦除错误?

    我正在创建一个map-reduce框架,现在我正在尝试创建一个构建器类来实例化处理管道 . 此构建器需要包含用户指定的函数列表,因此稍后它可以使用这些函数作为参数来构造管道来实例化Worker对象 . 我正在使用案例类来创建函数“持有者”,也用于“ Worker ” . 我的问题是,当我继续分析持有者时,如果我对它们进行模式匹配,则由于类型擦除,函数中的类型信息似乎丢失了 . 这里有一些最小的代码...
  • 4 votes
     answers
     views

    scala模式匹配函数 - 如何绕过类型擦除

    我想模式匹配一个函数,问题是类型擦除 . 请注意,在下面的代码段中,尽管发出了警告,但发生了匹配,并且在此处发生了一个匹配 . scala> def f1 = ()=>true f1: () => Boolean scala> val fl = f1 fl: () => Boolean = <function0> scala> scala&gt...
  • 7 votes
     answers
     views

    如何模式匹配scala列表的head和tail类型?

    我希望 pattern match 在 scala 的 scala 的不同段上 head 和 tail 的类型: class Solution07 extends FlatSpec with ShouldMatchers { "plain recursive flatten" should "flatten a list" in { val li...
  • 0 votes
     answers
     views

    是否有可能在模式中创建可变引用的可变值?

    在模式匹配时,您可以使用 ref mut 指定您希望获得对包含值的可变引用: let mut score = Some(42); if let Some(ref mut s) = score { &mut s; } 但是,内在值不可变: error[E0596]: cannot borrow immutable local variable `s` as mutable --&...
  • 5 votes
     answers
     views

    在模式匹配期间防止移动语义

    我在这里有一个愚蠢的例子,只是为了演示我遇到的另一个库和模式匹配的问题 . struct Person { name: String, age: i32, choice: Choices } #[derive(Debug)] enum Choices { Good, Neutral, Evil } fn find(p: Person) { ...
  • 2 votes
     answers
     views

    为什么在模式匹配后不会移动此结构?

    基于Preventing move semantics during pattern matching,我的理解是当我在结构上执行 match 时,如果不使用引用来进行匹配,则结构将被移动,因为它不是基本类型 . 为了测试这个,我实现了以下内容: struct Point { x: i32, y: i32, } let origin = Point { x: 0, y: 0 };...
  • 6 votes
     answers
     views

    Scala模式匹配语法

    我最近一直在玩scala模式匹配,并且想知道是否有一种方法可以在case语句中创建一个提取器 . 以下代码有效,但您必须先定义提取器并将其分配给val: val Extr = "(.*)".r "test" match { case Extr(str) => println(str) } 我想做什么,或者我希望有人确认是不可能的,是这样的: &q...
  • 0 votes
     answers
     views

    参数类的Clojure模式匹配

    我有一个用Scala编写的简单程序,它将逻辑表达式作为case类的成员来操作,它扩展了Expr trait(下面的代码) . 然后我有一些函数只是在参数的类上进行模式匹配并执行一些操作 . sealed trait Expr case class Implication(lhs: Expr, rhs: Expr) extends Expr { override def toString =...
  • 2 votes
     answers
     views

    如何实现模式匹配?

    例如, List(1, 2, 3) match { case x :: y => (x, y) } 在上面的代码中,模式匹配将自动发现任何非空 List 与案例 x :: y 匹配 . 我想知道,为什么会这样? 众所周知, List 类中有一个 :: 方法 . 另外,我发现在"list.scala"中有一个 :: 案例类: /** A non empty list ...

热门问题