!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                  Safe-Inferred   Safe-InferredM#class of things that can be run in parallel and can be shortcuted. The funtion in parameter is called everytime an intermediate result is known, as soon as it returns True the intermediate results are returned (discarding those not yet available). the order of the lists must be preserved version without the maybes *version with two different types of result <version with a supplementary event which result is discarded    None!"(*+0246:<=M informations on playersthe status of a rule.(An informationnal structure about a rule%Type of a rule function.C Input formsREvents parametersUType agnostic result dataWType agnostic base eventYSignals`Composable eventsi(a container for a variable name and typeA NomexNE (Nomyx Expression No Effect) is a specialisation of the type that guarantees that the instructions will have no effects.A Nomex (Nomyx Expression) allows the players to write rules. Within the rules, you can access and modify the state of the game. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ÿl~}|{zyxwvutsrqponmijk`hgfedcbaY_^]\[ZWXUVRTSKQPONMLIJCHGFED;<=>?@AB3:9876542./01*+,-)&('% !"#$N  !"#$%&(')*+,-./0123:987654;<=>?@ABCHGFEDIJKQPONMLRTSUVWXY_^]\[Z`hgfedcbaijkl~}|{zyxwvutsrqponmNoneM register a callback on an event <register a callback on an event, disregard the event number =set an handler for an event that will be triggered only once 8broadcast a message that can be catched by another rule subscribe on a message ?on the provided schedule, the supplied function will be called  get the current time as UTCTime (Build an event firing at a specific time:Build a event firing when the victory condition is changed4Build a event firing when a player arrives or leaves5Build a event firing when an action is made on a ruleyBuild a message event, that can be intercepted by another rule this is useful for message-passing style of communicationABuild a event firing immediatly, yelding the value of the NomexNEdurationdurationdurationdurationNone!"+MArrayVar is an indexed array with a signal attached triggered at every change. | each indexed elements starts empty (value=Nothing). ua MsgVar is a variable with a message attached, allowing to trigger registered functions anytime the var if modified variable creation variable reading variable writing .modify a variable using the provided function delete variable Mcreate a new MsgVar and register callback in case of change (update, delete) Fadds a callback for each of the MsgVar events: Create, Update, Delete 4get the messsage triggered when the array is filled get the association array initialize an empty ArrayVar \initialize an empty ArrayVar, registering a callback that will be triggered at every change _initialize an empty ArrayVar, registering a callback. the ArrayVar will be deleted when full  qstore one value and the given index. If this is the last filled element, the registered callbacks are triggered. ) the MsgVar )callback on creation (called immediatly) callback on update callback on delete -event number generated for update and delete   ,ijk  ,ijk  $  None!"  #event based on a radio input choice Mtriggers a choice input to the user. The result will be sent to the callback %the same, disregard the event number 1the same, suppress the event after first trigger event based on a text inputMtriggers a string input to the user. The result will be sent to the callback Oasks the player pn to answer a question, and feed the callback with this data. Oasks the player pn to answer a question, and feed the callback with this data. event based on a checkbox inputevent based on a button event based on a text area    CDEFGH   CHGFED      None 1outputs a message to one player, dynamic version !0outputs a message to one player, static version " output a message to all players #)output a constant message to all players $get an output by number %)get an output by number, partial version &update an output 'delete an output  !"#$%&'()*+  !"#$%&'()*+  !"#$%&'()*+  !"#$%&'()*+NoneM,AA meta rule is a rule that can juge the legality of another rule.-:activate a rule: change its state to Active and execute it/reject a rule: change its state to Suppressed and suppresses all its environment (events, variables, inputs, victory) the rule can be activated again later64add a rule to the game, it will have to be activated85add a rule to the game as described by the parameters>Iallows a rule to retrieve its own number (for auto-deleting for example) @activate or reject a ruleAKa rule can autodelete itself (generaly after having performed some actions)B#All rules from player p are erased:C3This rule will activate automatically any new rule.D,The meta rules are stored in a list variableEcreate the meta rule variableFadd a new metarule to the listG-use the list of meta rules to juge a new ruleIA rule will be always legalJA rule will be always illegalK&Player p cannot propose any more rulesLrule number rn cannot be deleted by any incoming rule we simulate the execution of an incoming rule to make sure it doesn't delete the immutable ruleMMsimulate the execution of rule "sim" and then run rule "test" over the resultN-sets a callback called for each rule proposeda default rule ',-./0123456789:;<=>?@ABCDEFGHIJKLMNO1KLMNOPQ,-./0123456789:;<=>?@ABCDEFGHIJKLMNO1KQPONML,-./0123456789:;<=C@MDEFGHIJKLAB>?NO',-./0123456789:;<=>?@ABCDEFGHIJKLMNO None!"EMPget all the players QGet a specific player RGet the name of a player S2Get the name of a player, his number if not found TSet the name of a player V Get the total number of players WGet all the players number X'Remove the player from the game (kick) Yperform an action for each current players, new players and leaving players returns the event numbers for arriving players and leaving playersZperform the same action for each players, including new players returns the event numbers for arriving players and leaving players[Ocreate a value initialized for each players manages players joining and leaving\ccreate a value initialized for each players initialized to zero manages players joining and leaving`&show a player name based on his numbera!set victory to a list of players bgive victory to one player c2get the player number of the proposer of the rule eeget a random number uniformly distributed in the closed interval [lo,hi] resets the number generatorPQRSTUVWXYZ[\]^_`abcde#RSTPQRSTUVWXYZ[\]^_`abcde#RTSPQRSTUVWXYZ[\]^_`cdabePQRSTUVWXYZ[\]^_`abcde None !"+234=KMfthe vote statistics, including the number of votes per choice, the number of persons called to vote, and if the vote is finished (timeout or everybody voted)k:a vote assessing function (such as unanimity, majority...)l%vote at unanimity every incoming rulemOcall a vote on a rule for every players, with an assessing function and a delayo'actions to do when the vote is finishedpfcall a vote for every players, with an assessing function, a delay and a function to run on the resultqsvote with a function able to assess the ongoing votes. | the vote can be concluded as soon as the result is known.s0assess the vote results according to a unanimitytQassess the vote results according to an absolute majority (half voters plus one) u<assess the vote results according to a majority of x (in %) vEassess the vote results according to a fixed number of positive votesw'adds a quorum to an assessing function zCompute a result based on a quota of positive votes. the result can be positive if the quota if reached, negative if the quota cannot be reached anymore at that point, or still pending.{inumber of people that voted if the voting is finished, total number of people that should vote otherwisefghijklmnopqrstuvwxyz{|}~fghijklmnopqrstuvwxyz{|}~kfghijlmnopqrstuvwxyz{}|~fghijklmnopqrstuvwxyz{|}~  Trustworthye !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred!"$+castle structureA rule that does nothing%A rule that says hello to all playersaccount variable name and type&Create a bank account for each players%Permanently display the bank accountseach player wins X Ecu each day you can also try with "minutly" or "monthly" instead of "daily" and everything in the "time-recurrence" package2a player wins X Ecu if a rule proposed is accepted-a player can transfer money to another playerDhelper function to transfer money from first player to second player delete a rule_player pn is the king: we create a variable King to identify him, and we prefix his name with King?Monarchy: only the king decides which rules to accept or rejectRevolution! Hail to the king! This rule suppresses the democracy (usually rules 1 and 2), installs the king and activates monarchy.=set the victory for players having more than X accepted rules:will display the current time (when refreshing the screen)9will display the time at which the rule as been activatedOnly one player can achieve victory: No group victory. Forbidding group victory usually becomes necessary when lowering the voting quorum: a coalition of players could simply force a "victory" rule and win the game.SRule that state that you win. Good luck on having this accepted by other players ;)a majority vote, with the folowing parameters: a quorum of 2 voters is necessary for the validity of the vote the vote is assessed after every vote in case the winner is already known the vote will finish anyway after one daygChange current system (the rules passed in parameter) to absolute majority (half participants plus one),kick a player and prevent him from returning;display a button and greets you when pressed (for player 1)'display a button to greet other playerstriggers a referendum, if the outcome is yes player 2 will be kicked referendumOnKickPlayer :: Rule referendumOnKickPlayer = referendum " kick player 2" (void $ delPlayer 2)"       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&&'()*+,-./012344567789:;<=>?@ABCCDEFGHIJKLMNOPPQRSTUVWXYZ[[\\]^_`aXbcdefghijkllmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e e f g h i j k l m n o p q r s t u v w x y z { | } ~                                            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVTUWTXYTXZTX[TX[TX\T]^T]_T]`T]aT]bT]cdefdegdehdeidejdekdeldemdendeodepdeqderdesdetdeudvwdvxdvydvzdv{dv|dv}dv~dvdvdvdvdvdvdvdvdvdvdvdvdvdvdvdddddddddddddddddddddddddddddddddddNomyx-Language-0.7.3Paths_Nomyx_LanguageControl.ShortcutLanguage.Nomyx.ExpressionLanguage.Nomyx.EventsLanguage.Nomyx.VariablesLanguage.Nomyx.InputsLanguage.Nomyx.OutputsLanguage.Nomyx.RulesLanguage.Nomyx.PlayersLanguage.Nomyx.VoteLanguage.Nomyx.ExamplesLanguage.Nomyxversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName Shortcutableshortcut shortcut_ shortcut2 shortcut2bfromLeft fromRight VictoryInfo _vRuleNumber_vCond PlayerInfo _playerNumber _playerName_playAs RuleStatusRejectPendingActiveRuleInfo_rNumber_rName _rDescription _rProposedBy _rRuleCode_rRule_rStatus _rAssessedByRuleStatusSDeletedSActive EventHandlerSignalOccurence_signalOccData_signalOccAddress SignalDatasignal signalData SignalAddressSignalAddressElemShortcutBindLBindRAppLAppRSumLSumR EventInfo _eventNumber _ruleNumbereventhandler _evStatus_env InputFormCheckboxRadioButtonTextAreaTextMsg RuleEventDeletedModifiedAddedRejected ActivatedProposedPlayerLeaveArriveSomeData SomeSignalSignalVictoryMessageTimeRuleEvInputEvent LiftEvent SignalEventShortcutEvents BindEvent EmptyEvent PureEventAppEventSumEventVvarNameExpSimu LiftEffect CatchError ThrowErrorBindReturnGetRandomNumberSelfRuleNumber CurrentTime SetVictory DelOutput UpdateOutput GetOutput NewOutput DelPlayer SetPlayerName GetPlayersGetRules ModifyRuleAddRule RejectRule ActivateRule ProposeRule SendMessage GetEventsDelEventOnEventDelVarWriteVarReadVarNewVarNomexNENomexNoEffectEffectEff InputNumber OutputNumberCodeVarName EventName EventNumberRuleCodeRuleTextRuleDescRuleName RuleNumber PlayerName PlayerNumber liftEffectpartial concatMapM $fShow(->)$fOrdPlayerInfo $fOrdRuleInfo $fEqRuleInfo$fOrdEventInfo $fEqEventInfo$fShortcutableEvent$fMonadPlusEvent $fMonadEvent$fAlternativeEvent$fApplicativeEvent$fFunctorEvent$fMonadError[]Exp$fApplicativeExp $fFunctorExp $fMonadExp $fShowExp $fShowExp0rNumberrName rDescription rProposedBy rRuleCoderRulerStatus rAssessedBy playerNumber playerNameplayAs eventNumber ruleNumberevStatusenv signalOccDatasignalOccAddressonEventonEvent_ onEventOncedelEvent getEventsgetEventgetIntermediateResults sendMessage sendMessage_ onMessage onMessageOnceschedule schedule_ schedule' schedule'_getCurrentTime timeEvent victoryEvent playerEvent ruleEvent messageEvent liftEventoneWeekoneDayoneHour oneMinuteinputFormSignal signalEventArrayVarMsgVarmessagevariableVEventVDeletedVUpdatednewVarnewVar_newVar'readVarreadVar_writeVar modifyVardelVarmsgVar newMsgVar newMsgVar_ newMsgVar'newMsgVarOnEvent writeMsgVar readMsgVar readMsgVar_ modifyMsgVar delMsgVar onMsgVarEventonMsgVarChangeonMsgVarDeletegetMsgVarMessage getMsgVarDatagetMsgVarData_ getMsgVarName newArrayVar newArrayVar_ newArrayVar'newArrayVarOnce cleanOnFullisFullArrayVar_ putArrayVar putArrayVar_ inputRadio inputRadio' onInputRadio onInputRadio_onInputRadioOnce inputText onInputText onInputText_onInputTextOnce inputCheckboxonInputCheckboxonInputCheckbox_onInputCheckboxOnce inputButton onInputButtononInputButton_onInputButtonOnce inputTextareaonInputTextareaonInputTextarea_onInputTextareaOnce newOutput newOutput_ outputAll outputAll_ getOutput getOutput_ updateOutput delOutput displayVar displayVar'displaySimpleVardisplayArrayVarMetaRule activateRule activateRule_ rejectRule rejectRule_getRulesgetActiveRulesgetRulegetRulesByNumbers getRuleFuncsaddRuleaddRule_addRule'getFreeRuleNumber suppressRule suppressRule_suppressAllRules modifyRulegetSelfRuleNumber getSelfRuleactivateOrRejectRule autoDelete eraseAllRules autoActivate metaruleVarcreateMetaruleVar addMetaruletestWithMetaRulesdisplayMetaruleslegalillegal noPlayPlayer immutableRulesimulateonRuleProposedshowRule getPlayers getPlayer getPlayerNamegetPlayerName' setPlayerNamemodifyPlayerNamegetPlayersNumbergetAllPlayerNumbers delPlayer forEachPlayerforEachPlayer_createValueForEachPlayercreateValueForEachPlayer_getValueOfPlayermodifyValueOfPlayermodifyAllValues showPlayer setVictory giveVictorygetProposerNumbergetProposerNumber_getRandomNumber VoteStats voteCountsnbParticipants voteFinishedAssessFunction unanimityVote callVoteRule callVoteRule' finishVotecallVotevoteWith singleVote unanimitymajority majorityWith numberVotes withQuorum getVoteStatscounts voteQuotanbVotersnotVotedvoted displayVotegetVotesgetBooleanResultshowOnGoingVoteshowFinishedVoteshowVote showChoicenothing helloWorldaccountscreateBankAccountdisplayBankAccount winXEcuPerDaywinXEcuOnRuleAccepted moneyTransferdelRulemakeKingkingmonarchy revolution victoryXRules victoryXEcudisplayCurrentTimedisplayActivateTimenoGroupVictoryiWinvoteWithMajorityreturnToDemocracy banPlayer bravoButton helloButton enterHaiku gameMastercatchIObindirlibdirdatadir libexecdir sysconfdirgetInputResultexecuteAndScheduleNextexecuteAndScheduleNext'inputRadioSignalinputTextSignalinputCheckboxSignalinputButtonSignalinputTextareaSignal showArrayVar defaultRule getFreeNumber mapMaybeMCastletransfermakeGMtowersdungeontournamentMasterCandidatescastlesbaseGHC.Base++foldrGHC.Listconcatfilterzipmapfail>>=>>fmapreturn Control.MonadguardliftMjoinMonadFunctor MonadPlusfoldMzipWith Data.List intercalateunwordswordsunlineslinesproductsumfoldl1'foldl1foldl'unfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLength minimumBy maximumByminimummaximuminsertByinsert mapAccumR mapAccumL partition transpose intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndexfind elemIndices elemIndex stripPrefix dropWhileEndmfilterapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_ zipWithM_zipWithM mapAndUnzipMvoidforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<mplusmzerounzip3unzipzipWith3zip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailhead time-1.4.2Data.Time.Clock.UTCDiff diffUTCTime addUTCTimeData.Time.Clock.UTC utctDayTimeutctDayUTCTimeNominalDiffTimeData.Time.Clock.ScalepicosecondsToDiffTimesecondsToDiffTimegetModJulianDate ModJulianDate UniversalTimeDiffTimetime-recurrence-0.9.2Data.Time.Recurrence.SchedulestartingevalrecurwithStartOfWeekbyyearlymonthlyweeklydailyhourlyminutelysecondlyFreqRecurAndSchedule$Data.Time.Recurrence.ScheduleDetailsselectenumScheduleDetailsSecondsMinutesHoursDaysWeeksWeekDaysWeekDaysInWeekWeekDaysInMonthMonthsYearDays PeriodFilterfromEPFEPFEnumerablePeriodFilterfromFPFFPFFilterablePeriodFilterfromSPFSPFSelectablePeriodFilterData.Time.Moment.MomentMoment#Data.Time.CalendarTime.CalendarTimecalendarTimeZonecalendarYearDaycalendarWeekDay calendarYear calendarMonth calendarDay calendarHourcalendarMinutecalendarSecond CalendarTimeData.Time.Calendar.MonthJanuaryFebruaryMarchAprilMayJuneJulyAugust SeptemberOctoberNovemberDecemberMonthData.Time.Calendar.WeekDayMondayTuesday WednesdayThursdayFridaySaturdaySundayWeekDayData.Time.Recurrence.AndThen>==>AndThen