2016-12-06 16 views
-5
  1. My Exercise는 이것을 나에게 원래 코드로 제공했습니다.
  2. 그들은 자바 구현을 원했습니다.
  3. 나는 지금 나는 그것을 이해할 수 없게되었다고 생각했다.
  4. 어쨌든
    을 모두 고정시키는 변수 "n"을 사용하는 지점이 있습니다.
  5. 디버깅 할 수있는 것이 더 많지 않은 한 이것이 내 진짜 문제였습니다.
  6. 나는 내 마지막 다음 주 전에이 물건을 배우려고하고있다.Java로 ML 프로그램을 작성하려면 어떻게해야합니까? 중첩 된 함수 사용

    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 코드의 원본 버전이 위에 있습니다. StackOverflow의 숙제에 도움을 요청

    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); 
        } 
    } 
    
+1

무엇을하려하십니까? 뭐가 문제 야? 질문 할 때 구체적이고 명확해야합니다. – progyammer

+0

나는 프로그램이해야 할 일에 대해 잘 모르겠습니다. 나는 수업 중 하나에서 ML을 배우고 있는데, 이것은 나를 도울 것으로 생각되는 운동이지만 나를 혼란스럽게 만들고 있습니다. –

+0

ML 프로그램을 Java로 작성한다는 것은 무엇을 의미합니까? ML 코드를 Java로 변환하려고합니까? – EJoshuaS

답변

2

아마 당신이 모든 downvotes을 가지고 이유입니다 민감한 주제이다. 질문자의 특정 기대에 대해서는 this guide을 참조하십시오.

  • 먼저 문제를 직접 해결해보십시오.
  • 기존 구현의 특정 문제에 대해 문의하십시오.
  • 문제는 숙제라고 인정하십시오.
  • 학교 정책에 유의하십시오. (나는 적어도 이것을 의심합니다.)
  • 이해할 수없는 코드를 사용하지 마십시오. □ (잎을 볼 수 있습니다.)

이 어떻게 자바에서 ML 프로그램을 작성합니까?

너는하지 .... 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에서 람다 식의 렉시 컬 범위 지정을 사용할 수 있습니다. 이것은 Java에서는 관용적이지는 않지만 변환을보다 직접적으로 만들어줍니다.

  3. 추가 함수 인수를 사용하여 내부 함수에 외부 함수의 매개 변수를 전달할 수 있습니다. 예 : 함수 g을 인수로 취하고 hx, yn을 인수로 취하게하십시오.

    이러한 함수는 절대 반환 값에만 의존 할 수 있으므로 절대 범위 외부의 변수를 변경할 필요가 없습니다.