【问题标题】:How do I write an ML program in Java? With Nested Functions如何用 Java 编写 ML 程序?使用嵌套函数
【发布时间】:2016-12-06 18:01:54
【问题描述】:
  1. 我的练习给了我这个作为原始编码。
  2. 然后他们希望我们对其进行 Java 实现。
  3. 我认为我现在无法理解它。
  4. 这里有一个地方使用了一个变量“n”,把它搞砸了
    以某种方式。
  5. 这是我真正的问题,除非有更多可以调试的问题。
  6. 我只是想在下周的期末考试之前学习这些东西。

    fun f x y =  
        let
          val a = x+1
          fun g 0 = 0
            | g n =
              let
                  val a = x+y
                  fun h 0 = 0
                    | h k = a+n+g(n-1)
              in
                  h (n-1)
              end
        in
            if x = 0
            then g y
            else a + g(f (x-1) y)
        end
    
  7. 这是我尝试的程序。

  8. 我应该实现的 ML 代码的原始版本在上面。

    public class f {
        static double k;
        static double x;
        static double y;
        static double a, a2;
        static double n;
    
        public static double fn(double x, double y)
        {
            a = x + 1;
            if(x == 0)
                g(y);
            return a + g(fn((x-1), y));
        }
    
        public static double g(double n)
        {
            if(n == 0)
                return 0;
            a2 = (x + y);
            f.n = h(n-1);
            return f.n;
        }
    
        public static double h(double k)
        {
            if(k==0)
                return 0;
            else
            {
                k = a2 + n + g(n-1);
                return k;
            }
        }
    
        public static void main(String[] args)
        {
            /*double arg2[] = null;
            for (int i = 0; i < args.length; i++) {
                arg2[i] = Double.parseDouble(args[i]);
            }*/
            fn(2,1);
        }
    }
    

【问题讨论】:

  • 你想做什么?有什么问题?提问时请具体明确。
  • 我不太确定程序应该做什么。要么我在我的一门课上学习机器学习,这只是一个应该帮助我的练习,但它让我更加困惑。
  • 你想用Java写一个机器学习程序是什么意思?您是否正在尝试将 ML 代码翻译成 Java?

标签: java implementation sml ml


【解决方案1】:

在 StackOverflow 上寻求家庭作业帮助是一个敏感话题,这可能是你得到所有反对票的原因。请参阅this guide 了解提问者的某些期望:

  • 首先真诚地尝试自己解决问题。
  • 询问您现有实施的具体问题。
  • 承认问题是家庭作业。
  • 注意学校政策。 (至少我对此表示怀疑。)
  • 切勿使用您不理解的代码。 □ (有待观察。

如何用 Java 编写机器学习程序?

你……不要。您要么编写 ML 程序,要么编写 Java 程序。

将此 ML 程序转换为 Java 程序并非易事,因为 ML 程序使用嵌套范围,这在 Java 代码中有些不典型。为了练习的目的,这被夸大了。

以下是一些建议:

  1. 不要使用一段静态变量:

    static double k;
    static double x;
    static double y;
    static double a, a2;
    static double n;
    

    它们与 ML 的 lexical scoping 对应的不是很好,您可能会从错误的范围更新它们。

  2. 您可以在 Java 中使用 lambda 表达式的词法范围。这对 Java 来说不是惯用的,但它会使翻译更直接。

  3. 您可以使用额外的函数参数将外部函数的参数传递给内部函数。例如。让函数gxy 作为参数,让函数hxyn 作为参数。

    这些函数无论如何都不需要更改其范围之外的变量,因为它们可以单独依赖返回值。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多