Javier / Mar 14 2023
Remix of Environments: A Deep Dive by  Nextjournal
Nextjournal
Explorando lenguajes de programación
El propósito de esta notebook es que la utilicen para explorar distintos lenguajes de programación. No están limitados a las celdas que abrí, también pueden crear celdas de otros lenguajes que están disponible cuando hacen click en el ícono +
Así que ¡diviértanse! (Y recuerden tratar de realizar la función de potencia en uno de los dos lenguajes de abajo, Racket o Python).
Java
/**Calcula la potencia de un número x, siempre y cuando el exponente sea un número natural*/public double potencia(double base, int expt) throws IllegalArgumentException{  if(expt < 0) throw new IllegalArgumentException("El exponente debe ser un número natural");  double res = 1.0;  while(expt >= 1){    res*=base;    expt--;  }return res;} 2.8s
Math.pow(-2,-32)0.4s
potencia(-2, -32)0.3s
Scala
 def potencia(base:Double , expt:Int): Either[String,Double] = {   if(expt < 0) Left("El exponente debe ser un número natural")    else Right({      val vec = for(i <- 1 to expt) yield base      vec.foldLeft(1.0)((a,b) => a*b)      }) }11.1s
potencia(3,6)1.5s
java.lang.Math.pow(6,6)0.9s
potencia(6,6)1.2s
Julia
function potencia(a, b)  reduce(*, repeat([a],b))end0.2s
Clojure
(defn potencia  [base expt]  (if (< expt 0)    "El exponente debe ser un numero natural"  (->> (repeat base)     (take expt)    (reduce *))))0.1s
(potencia 9 -12)0.1s
(Math/pow 9 12)0.1s
Python
# Descomente (es decir, borre el símbolo #) y complete la función# def potencia(base,expt):      0.1s
Racket
; Complete la función. Arrojará error si se evalúa porque falta el cuerpo.(define (potencia base expt)  )0.4s