자연 경관을 건축하다.

Esse posté bastante baseado emuma das aulas do curso 함수식 프로그래밍 원리, Scala, dispon minvel Undermanteaqui.
Em matemática,osaxiomas de Peano는 자연건축을 허용한다.자연 환경 건설에 관한 이념은 알론도 오르건스가 공리를 명확히 한다는 것이다.
axiomas de maior import–ncia para a gente serão:
  • 누메로 자연 chamado Zero에 존재한다.
  • 파라토도 누메로 자연, 오, 성공자, 데노타도 폴(n), 엔 누메로 자연;
  • N ã o existe um N 沺mero natural k, tal que S(k) = 0, istoé, 0 N ã o possui predestores;
  • 재미있는 이야기: N->N분짜메로스 naturais para N분짜메로스 naturaiséinjetiva(m=N se e somete se S(m)=S(N)).
  • 좋아, 이것은 자연 과학에 관한 공리(ver axioma da indução), 이것은 자연 과학 성공자에 관한 공리!
    파스 베어.
    드카라, 자연, 자연, 자연, 자연, 자연 등등.
    당신의 정의는 무엇입니까?Sejam m e S(n)números naturais,definimos:
  • m+Zero=m
  • m+S(n)=S(m+n)
  • 이것은 브린카 부코(brincar um pouco)의 작품으로 음악 창작(istoé,que m+n=n+m)에 관한 작품이다.
    베레자!Vamos seguir para o Scala.Vamos come çar Definendo umaabstract class Nat는 자연의 대표다.
    import java.util.NoSuchElementException
    
    abstract class Nat {
      def isZero: Boolean
      def predecessor: Nat
      def successor: Nat
      def + (that: Nat): Nat
      def - (that: Nat): Nat
    }
    
    그동안 우리는 무식한 사람을'자연의 즐거움'이라고 정의할 수도 있고,'자연의 도움'이라고 할 수도 있다!
    O próximo passo, édefinir O objetoSucc(O successor) e descriver os métodos que foram listados na super classe dos dos dos naturais(예: quando executamas O método is zero paraum objeto success, esperamasque eleretrone false):
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    }
    
    Ótimo!Agora, 성공한 집행자는 성공하지 못했다.틀리다
    이것은 성공의 필요성이며, 그 전신은 중요한 예이다.성공한 사람, 성공한 사람.
    Opróximo passoéimplementar Ométodopredecessor, 그 전신은 성공(n):
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    
      def predecessor: Nat = n
    }
    
    증거가 확실하고 성공의 증거, 자연의 증거(가능한 증거는 제로), 오!
    Ométodosuccessortambémé 자질구레함:
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    
      def predecessor: Nat = n
    
      def successor: Nat = new Succ(this)
    }
    
    이스토, 오, 성공자, 오, 성공자, 성공자, 성공자!주:quethis는 자동 참고 프로젝트로 성공 사례(n).후임 = 성공(n)
    Agora, vamos 구현자 algo mais Diveido, o método+(soma) 준성공자:
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    
      def predecessor: Nat = n
    
      def successor: Nat = new Succ(this)
    
      def +(that: Nat): Nat =
        if (!that.isZero) new Succ(this + that.predecessor)
        else this
    }
    
    O que O método+faz?와모스 토마르는 S(S(0)+S(0))의 대표적인 대표이다.
  • S(S(S)+S(S)
  • S(S(S)+S(0)
  • S(S(S(S)+0)
  • S(S(S(S))
  • 너는 하나의 알고리즘의 봉인, 하나의 간단한 알고리즘, 하나의 간단한 알고리즘, 하나의 간단한 알고리즘, 하나의 간단한 알고리즘, 하나의 간단한 알고리즘, 하나의 간단한 알고리즘을 상상할 수 있다.
    Agora, vamos implementar o método-, 이상주의자:
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    
      def predecessor: Nat = n
    
      def successor: Nat = new Succ(this)
    
      def +(that: Nat): Nat =
        if (!that.isZero) new Succ(this + that.predecessor)
        else this
    
      def -(that: Nat): Nat = {
        if (that.isZero) this
        else (this.predecessor - that.predecessor)
    }
    
    Vamos usar o mesmo 샘플 분석 método:
  • S(S(S)-S(S))
  • S(0)-S(0)
  • S(0) - 0
  • S(0)
  • Neste caso,pegamos opredecessorde ambos termos ao mesmo tempo,atéque o segundo termos se torne Zero!젤 퀸도 프리메로 테르모를 말씀하시는 건가요, 세공도를 말씀하시는 건가요?Teríamos umúmero Negato nesse caso!이것은 일종의 알고리즘이다. 부정이 아니라 실현이다. 형식의 오페라(알고리즘), 형식의 실현, 형식의 실현이다!Portato,vamos começar a implementar os métodos do objeto Zero!
    아심 코모 파라오 성공, 코모 메토도isZero:
    object Zero extends Nat {
        def isZero: Boolean = true
    }
    
    사실 이것은 진정한 의미의 집행관이다.
    우리는 object의 완전한 정의를 관찰했다.아니오, 이것은 전통입니다. 왜냐하면 Nat전유 정보의 특정한 요소에 존재하기 때문입니다. '0급'의 특정한 요소가 아닙니다.
    Agora, vamos 구현자 ométodopredecessor 제0단.클라라멘트, 페로 노임, 엘레디브-retronar와 전작 0:
    object Zero extends Nat {
        def isZero: Boolean = true
    
        def predecessor: Nat = 
        new throw java.util.NoSuchElementException("no predecessor for zero")
    }
    
    마스오파!Éclaro que o Zero não deve existir,como dita um dos axiomas.이것은 집행관이 없는 논쟁의 문제이다.전임자,jogue um erro(uma 예외)para vocyen,informando quen háum 전임자,para o Zero!
    Agora,implementandosuccessorde Zero:
    object Zero extends Nat {
        def isZero: Boolean = true
    
        def predecessor: Nat = 
        new throw java.util.NoSuchElementException("no predecessor for zero")
    
        def successor: Nat = new Succ(this)
    }
    
    Aqui, 이것은 성공의 예이고, 이것은 성공의 예이다.코모 가디토, 이 의미가 큰 자동차는 평범한 계층, 평범한 계층, 성공한 사람, 성공한 사람, 성공한 사람을 대표한다!
    Agora, soma+ 섹션 0으로 정의:
    object Zero extends Nat {
      def isZero: Boolean = true
    
      def predecessor: Nat = throw new NoSuchElementException("no predecessor for zero")
    
      def successor: Nat = new Succ(this)
    
      def + (that: Nat): Nat = new Succ(this)
    }
    
    코모 에스페라도, 모두 0 + 그, 그!파송 n+0=n!
    Por fim, como definir a subtra ço-para os casos Zero - 그게 뭐예요?
    object Zero extends Nat {
      def isZero: Boolean = true
    
      def predecessor: Nat = throw new NoSuchElementException("no predecessor for zero")
    
      def successor: Nat = new Succ(this)
    
      def + (that: Nat): Nat = new Succ(this)
    
      def - (that: Nat): Nat =
        if (that.isZero) Zero
        else throw new java.util.NoSuchElementException("no negative naturals allowed")
    }
    
    노바멘트, 코모 니온 햄의 전임 파라오 제로, 파제모스 오·código jogar, 엘로 오 아타 파제 우마 우마 소마 다모 제로, 제로와 다르다!
    이것은 아주 좋은 결론이다. 그것은 자연스러운 건축이다.èfácil은 우리의 공리를 검증했다. 왜냐하면 우리의 공리는 우리의 공리에 관한 것이기 때문이다.
    브린카르(Para brincar)는 걸출한 집행자toString입니다. 그는 걸출한 집행자입니다.카소가 아니라 아쉬운 사람이야.
  • 성공(n)=> "S(S(...n-vezes...S(0)"
  • "
  • 성공(0)=>S(0)
  • O código completo com essa implementaçO estádisponível abaixo:
    import java.util.NoSuchElementException
    
    abstract class Nat {
      def isZero: Boolean
      def predecessor: Nat
      def successor: Nat
      def + (that: Nat): Nat
      def - (that: Nat): Nat
    }
    
    class Succ(n: Nat) extends Nat {
      def isZero: Boolean = false
    
      def predecessor: Nat = n
    
      def successor: Nat = new Succ(this)
    
      def +(that: Nat): Nat =
        if (!that.isZero) new Succ(this + that.predecessor)
        else this
    
      def -(that: Nat): Nat = {
        if (that.isZero) this
        else (this.predecessor - that.predecessor)
      }
    
    
      override def toString(): String = {
        if (!n.isZero) "S(" + n.toString() + ")"
        else "S(0)"
      }
    }
    
    object Zero extends Nat {
      def isZero: Boolean = true
    
      def predecessor: Nat = throw new NoSuchElementException("no predecessor for zero")
    
      def successor: Nat = new Succ(this)
    
      def + (that: Nat): Nat = new Succ(this)
    
      def - (that: Nat): Nat =
        if (that.isZero) Zero
        else throw new java.util.NoSuchElementException("no negative naturals allowed")
    
      override def toString(): String = {
        return "0"
      }
    }
    
    Agora,vamos testar algumas operaões!
  • S(S(S(0))+S(S(0))=?
  • val n = new Succ(new Succ(Zero)) // S(S(0))
    val m = new Succ(new Succ(new Succ(Zero))) // S(S(S(0)))
    val s = n + m // S(S(S(0))) + S(S(0))
    
    Resultado:
    val s: Nat = S(S(S(S(S(0)))))
    
  • S(S(S(0))-S(S(0))=?
  • val d = m - n // S(S(S(0))) - S(S(0))
    
    Resultado:
    val d: Nat = S(0)
    
  • 0+S(S(S(0)=?
  • Zero + m
    
    Resultado:
    val res1: Nat = S(S(S(0)))
    
  • S(S(S(0))+0=?
  • m + Zero
    
    Resultado:
    val res1: Nat = S(S(S(0)))
    
    PS 2: N ão citei em nenhum momento, masóbvio que podemos traduzir nossaço notaço para a notaço 상습적인 자연 상태, istoé:
  • 0=>0
  • S(0)=>1
  • S(S(0) = >2
  • S(S(S.n-vezes...S(0).=>n
  • 좋은 웹페이지 즐겨찾기