Powershell cast in F # discriminated union

I have a Powershellscript and I loaded the library F#and created a record expression F#:

$teacher = Data+Teacher("Joan", "Doe", 27)

Now I need to pass $teacherto the function, but before I do this, I need to fine-tune it to print SchoolEmployee. When I tried:

$schoolEmployee = $teacher -as [Data+SchoolEmployee]

I got an empty object. In my F # module, I have a discriminatory union:

 module Data = 
     type SchoolEmployee =
     | Teacher of Teacher
     | Cleaner of Cleaner

How to convert a F#discriminatory type of union into a type Powershell?

+4
source share
1 answer

Using this definition of an entry Teacherfrom a related question :

module People =  
    type Teacher = {
        FirstName:string
        LastName:string
        Age:int }

Teacher PowerShell :

$teacher = New-Object Ploeh.StackOverflow.Q32987498.People+Teacher("Jane", "Doe", 27)

(, , , Teacher.)

$teacher Teacher:

PS> $teacher.GetType().FullName
Ploeh.StackOverflow.Q32987498.People+Teacher

Teacher case Teacher. case ; . . People+Teacher SchoolEmployee. , People+Teacher .

SchoolEmployee, NewTeacher:

$emp = [Ploeh.StackOverflow.Q32987498.Data+SchoolEmployee]::NewTeacher($teacher)

$emp SchoolEmployee:

PS> $emp.GetType().FullName
Ploeh.StackOverflow.Q32987498.Data+SchoolEmployee+Teacher

New-Object PowerShell F #:

let teacher = { FirstName = "Jane"; LastName = "Doe"; Age = 27 };

NewTeacher F #:

let emp = Teacher teacher

, , , case Teacher - , IL.

+5

Source: https://habr.com/ru/post/1610547/


All Articles