blob: 3a461eed97140e5d472c632500dd5b35e34bb289 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
open StdLabels
type t = unit
let process : t -> State.state -> State.state =
fun () state ->
(* Get the word corresponding to the proposition *)
let word =
state.State.current_prop
|> List.to_seq
|> Seq.map (fun opt ->
match opt with
| None -> ' '
| Some (letter, _) -> String.get (Jstr.to_string letter) 0 )
|> String.of_seq
in
let element =
List.filter
~f:(fun w -> not (String.equal w word))
state.State.analysis.element
in
let analysis = { state.analysis with element } in
let new_state = { state with analysis } in
(* Get the new proposition if any *)
let current_prop = Initialize.get_proposition analysis state.rules in
match current_prop with
| None -> new_state
| Some prop ->
FieldList.set_with_props prop state.fields new_state.rules;
State.{ new_state with current_prop = prop }
|