Código numérico funcionalizado
Jugando con F #, estoy tratando de pensar en el código de una manera más funcional. Una gran parte de mi trabajo es de naturaleza numérica, así que estoy pensando si esta reeducación tiene sentido. ¿Escribir código numérico de una manera funcional como tratar de encajar una clavija cuadrada en un agujero redondo o es simplemente una cuestión de una curva de aprendizaje empinada independientemente de la aplicación?
Por ejemplo, tomemos un fragmento que demuestre la ley débil de grandes números:
open System
open System.IO
open System.Windows.Forms
open System.Windows.Forms.DataVisualization
open FSharp.Data
open FSharp.Charting
open FSharp.Core.Operators
open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.Random
open MathNet.Numerics.Distributions
open MathNet.Numerics.Statistics
let T = 1000
let arr1 = Array.init T (fun i -> float i*0.)
for i in 0 .. T-1 do
arr1.[i] <- [|for j in 1..i do yield Exponential.Sample(0.1)|] |> Statistics.Mean
let arr2 = Array.init T (fun i -> float i*0.)
for i in 0 .. T-1 do
arr2.[i] <- arr1.[1 .. i] |> Statistics.Mean
arr2 |> Chart.Line |> Chart.Show
¿Existe una forma funcional sucinta de expresar lo anterior? ¿Qué tanto de un paradigma funcional se puede incorporar en un trabajo como este?
No estoy seguro si la pregunta está fuera de tema. Gracias.