小编Ant*_*ias的帖子

REPL 中的 Ocaml 多行函数

我正在尝试编写一个多行函数以在 OCaml REPL 中使用。我已经看过这个问题,但是在 REPL 中使用它时建议的语法似乎不起作用。

要使用一个人为的示例,我无法编译以下内容:

let theFun: int -> int = fun x ->
    let foo = x;
    foo;;
Run Code Online (Sandbox Code Playgroud)

当我输入没有“;;”的时候 在此在线 REPL中,它们无论如何都会被添加,这给了我一个语法错误。当我在本地计算机上使用 REPL 时,除非包含“;;”,否则不会对输入进行求值,这也会导致语法错误。

ocaml read-eval-print-loop

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

Lisp标签功能在使用前被删除

我正在尝试使用标签的本地函数来允许我的函数递归.这是代码:

(defun  my-replace (e1 e2 L)
  "Perform a deep replace e1 with e2 in L."
  (labels ((my-replace-rec (e1 e2 L)
             "Used for recursion"
             (cond ((endp L) nil)
                   ((equal (car L) e1) (cons e2 (cdr L)))
                   ((listp (car L)) (my-replace-rec e1 e2 (car L)))
                   (t (my-replace-rec e1 e2 (cdr L)))))))
    (my-replace-rec e1 e2 L))
Run Code Online (Sandbox Code Playgroud)

当我有slime评估函数并尝试运行它:

;   Note: Deleting unused function                                                
;   (LABELS MY-REPLACE-REC)                                                     
; ;                                                                             

; Warning: This function is undefined:                                          
;   MY-REPLACE-REC
Run Code Online (Sandbox Code Playgroud)

我试图尽可能多地填写错误消息,但我正在使用Emacs(我还是很新),并尝试粘贴一个小缓冲区.

为什么会这样?它被定义和使用,但它似乎在使用之前被删除(据说因为它没有被使用).

lisp function common-lisp

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

如何获取 Java 14 方法引用的 MethodInfo?

我本质上是在问与这个老问题相同的问题,但针对的是 Java 14 而不是 Java 8。为了避免回答者导航到老问题的麻烦,我将在这里重新表述。我想从引用的方法中获取函数的名称。下面的 Java 代码应该能让您明白:

public class Main
{
    public static void main(String[] args)
    {
       printMethodName(Main::main);
    }

    private static void printMethodName(Consumer<String[]> theFunc)
    {
        String funcName = // somehow get name from theFunc
        System.out.println(funcName)
    }
 }
Run Code Online (Sandbox Code Playgroud)

C# 中的等效内容是:

public class Main
{
    public static void Main()
    {
        var method = Main.Main;
        PrintMethodName(method)
    }

    private static void PrintMethodName(Action action)
    {
        Console.WriteLine(action.GetMethodInfo().Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

根据老问题的公认答案,如果没有大量的工作,这在 Java 8 中是不可能的,例如这个解决方案。Java 14中有更优雅的解决方案吗?

java reflection lambda java-14

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