Fault tolerant functional reactive programming (functional pearl)
Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional languages have been used in these domains to develop synchronous dataflow programming languages for reactive systems. Causal stream functions and F...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 2; číslo ICFP; s. 1 - 30 |
|---|---|
| Hlavní autor: | |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
01.09.2018
|
| ISSN: | 2475-1421, 2475-1421 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional languages have been used in these domains to develop synchronous dataflow programming languages for reactive systems. Causal stream functions and Functional Reactive Programming capture the essence of those languages in a way that is both elegant and robust.
To guarantee that critical systems can operate under high stress over long periods of time, these applications require clear specifications of possible faults and hazards, and how they are being handled. Modeling failure is straightforward in functional languages, and many Functional Reactive abstractions incorporate support for failure or termination. However, handling unknown types of faults , and incorporating fault tolerance into Functional Reactive Programming, requires a different construction and remains an open problem.
This work presents extensions to an existing functional reactive abstraction to facilitate tagging reactive transformations with hazard tags or confidence levels. We present a prototype framework to quantify the reliability of a reactive construction, by means of numeric factors or probability distributions, and demonstrate how to aid the design of fault-tolerant systems, by constraining the allowed reliability to required boundaries. By applying type-level programming, we show that it is possible to improve static analysis and have compile-time guarantees of key aspects of fault tolerance. Our approach is powerful enough to be used in systems with realistic complexity, and flexible enough to be used to guide their analysis and design, to test system properties, to verify fault tolerance properties, to perform runtime monitoring, to implement fault tolerance during execution and to address faults during runtime. We present implementations in Haskell and in Idris. |
|---|---|
| AbstractList | Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional languages have been used in these domains to develop synchronous dataflow programming languages for reactive systems. Causal stream functions and Functional Reactive Programming capture the essence of those languages in a way that is both elegant and robust.
To guarantee that critical systems can operate under high stress over long periods of time, these applications require clear specifications of possible faults and hazards, and how they are being handled. Modeling failure is straightforward in functional languages, and many Functional Reactive abstractions incorporate support for failure or termination. However, handling unknown types of faults , and incorporating fault tolerance into Functional Reactive Programming, requires a different construction and remains an open problem.
This work presents extensions to an existing functional reactive abstraction to facilitate tagging reactive transformations with hazard tags or confidence levels. We present a prototype framework to quantify the reliability of a reactive construction, by means of numeric factors or probability distributions, and demonstrate how to aid the design of fault-tolerant systems, by constraining the allowed reliability to required boundaries. By applying type-level programming, we show that it is possible to improve static analysis and have compile-time guarantees of key aspects of fault tolerance. Our approach is powerful enough to be used in systems with realistic complexity, and flexible enough to be used to guide their analysis and design, to test system properties, to verify fault tolerance properties, to perform runtime monitoring, to implement fault tolerance during execution and to address faults during runtime. We present implementations in Haskell and in Idris. |
| Author | Perez, Ivan |
| Author_xml | – sequence: 1 givenname: Ivan surname: Perez fullname: Perez, Ivan organization: National Institute of Aerospace, USA |
| BookMark | eNplkE1LAzEYhINUsNbiX9ibeljNm4_N5liKVaHgRc_L6-ZNWcl-kE0F_71b7KHoaWbgYRjmks26viPGroHfAyj9IIUsjIUzNhfK6ByUgNmJv2DLcfzknIOVqpR2zlYb3IeUpT5QxC5lft_Vqek7DFkknOwXZUPsdxHbtul22e0JMBDGcHfFzj2GkZZHXbD3zePb-jnfvj69rFfbvBa6TLmT6LwBSVA4a3QBQjojPjR5I0gaIGtMqZ0Tvi68UqQMJwN2SkoLdKVcsPy3t479OEbyVd0kPExJEZtQAa8OF1THCyb-5g8_xKbF-P2P_AFNxlwc |
| CitedBy_id | crossref_primary_10_1017_S0956796820000210 crossref_primary_10_1145_3299711_3242757 crossref_primary_10_1017_S0956796820000118 |
| Cites_doi | 10.1145/2775050.2633368 10.1145/581690.581695 10.1109/MIC.2007.132 10.1145/258949.258973 10.1109/32.588520 10.1145/2633357.2633363 10.1145/351240.351266 10.1145/3242744.3242757 10.1145/2976002.2976012 10.1145/2897336.2897340 10.1016/S0167-6423(99)00015-5 10.1145/2578854.2503791 10.1145/199448.199528 10.1016/S0167-6423(99)00023-4 10.5555/647765.735995 10.1145/871895.871897 10.1145/2544174.2500581 10.1145/3110246 10.1145/1596550.1596582 10.1145/2560537 10.1145/2976002.2976010 10.1007/978-3-642-40447-4_16 10.1145/3122955.3122957 10.1007/978-3-642-29860-8_23 10.5555/647537.729692 10.1016/0167-6423(90)90056-J 10.1109/5.97300 10.5555/1939399.1939428 10.1145/1465611.1465708 10.1145/2578855.2535846 10.5555/5280.5288 10.1109/5.97299 10.1017/S0956796805005721 10.1145/287000.287023 10.1109/TC.1976.1674598 10.1145/1629575.1629596 10.1145/1159803.1159809 10.1145/2096148.2034690 10.1145/2633357.2633368 10.5555/647762.735509 |
| ContentType | Journal Article |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3236791 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 30 |
| ExternalDocumentID | 10_1145_3236791 |
| GroupedDBID | AAKMM AAYFX AAYXX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS CITATION EBS GUFHI LHSKQ M~E OK1 ROL |
| ID | FETCH-LOGICAL-c258t-d3adf713e16d9756123d72b5ef72e371e97785dd2fc6f44e470e719fc6452ad83 |
| ISICitedReferencesCount | 4 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000461309200030&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 2475-1421 |
| IngestDate | Sat Nov 29 07:49:44 EST 2025 Tue Nov 18 21:24:14 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | ICFP |
| Language | English |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-c258t-d3adf713e16d9756123d72b5ef72e371e97785dd2fc6f44e470e719fc6452ad83 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3236791 |
| PageCount | 30 |
| ParticipantIDs | crossref_citationtrail_10_1145_3236791 crossref_primary_10_1145_3236791 |
| PublicationCentury | 2000 |
| PublicationDate | 2018-09-01 |
| PublicationDateYYYYMMDD | 2018-09-01 |
| PublicationDate_xml | – month: 09 year: 2018 text: 2018-09-01 day: 01 |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationYear | 2018 |
| References | e_1_2_2_4_1 e_1_2_2_49_1 e_1_2_2_6_1 e_1_2_2_22_1 e_1_2_2_20_1 e_1_2_2_2_1 e_1_2_2_41_1 e_1_2_2_43_1 e_1_2_2_8_1 e_1_2_2_28_1 e_1_2_2_45_1 e_1_2_2_26_1 e_1_2_2_47_1 e_1_2_2_13_1 Xu Libin (e_1_2_2_59_1) 2016 e_1_2_2_30_1 e_1_2_2_51_1 e_1_2_2_19_1 e_1_2_2_17_1 Lincoln Patrick (e_1_2_2_32_1) e_1_2_2_34_1 e_1_2_2_15_1 e_1_2_2_36_1 e_1_2_2_57_1 Dormoy Francois-Xavier (e_1_2_2_18_1) 2008 e_1_2_2_25_1 e_1_2_2_48_1 e_1_2_2_5_1 e_1_2_2_23_1 e_1_2_2_7_1 e_1_2_2_21_1 e_1_2_2_1_1 e_1_2_2_3_1 Stewart Robert (e_1_2_2_53_1) 2016 Orchard Dominic A. (e_1_2_2_38_1) 2014 e_1_2_2_42_1 e_1_2_2_9_1 e_1_2_2_29_1 e_1_2_2_44_1 e_1_2_2_27_1 Pfeifer Holger (e_1_2_2_46_1) 1999; 7 Di Vito Ben L (e_1_2_2_16_1) 1999; 7 e_1_2_2_14_1 e_1_2_2_37_1 e_1_2_2_12_1 Huch Frank (e_1_2_2_24_1) 2000 e_1_2_2_39_1 Owre S. (e_1_2_2_40_1); 607 e_1_2_2_10_1 e_1_2_2_31_1 e_1_2_2_54_1 e_1_2_2_33_1 e_1_2_2_56_1 e_1_2_2_35_1 e_1_2_2_58_1 e_1_2_2_50_1 Trinder Phil (e_1_2_2_55_1) 2000; 2 |
| References_xml | – ident: e_1_2_2_37_1 doi: 10.1145/2775050.2633368 – volume: 2 start-page: 103 year: 2000 ident: e_1_2_2_55_1 article-title: Towards Runtime System Level Fault Tolerance for a Distributed Functional Language publication-title: Trends in Functional Programming – ident: e_1_2_2_35_1 doi: 10.1145/581690.581695 – ident: e_1_2_2_56_1 doi: 10.1109/MIC.2007.132 – ident: e_1_2_2_20_1 doi: 10.1145/258949.258973 – volume: 7 start-page: 1999 year: 1999 ident: e_1_2_2_46_1 article-title: Formal verification for time-triggered clock synchronization publication-title: Dependable Computing for Critical Applications – ident: e_1_2_2_19_1 doi: 10.1109/32.588520 – ident: e_1_2_2_34_1 doi: 10.1145/2633357.2633363 – ident: e_1_2_2_12_1 doi: 10.1145/351240.351266 – ident: e_1_2_2_4_1 doi: 10.1145/3242744.3242757 – ident: e_1_2_2_9_1 doi: 10.1145/2976002.2976012 – ident: e_1_2_2_8_1 doi: 10.1145/2897336.2897340 – ident: e_1_2_2_6_1 doi: 10.1016/S0167-6423(99)00015-5 – ident: e_1_2_2_27_1 doi: 10.1145/2578854.2503791 – volume: 607 volume-title: PVS: A Prototype Verification System. In 11th International Conference on Automated Deduction (CADE) (Lecture Notes in Artificial Intelligence), Deepak Kapur (Ed.) ident: e_1_2_2_40_1 – volume-title: Computer Assurance, 1994. COMPASS’94 Safety, Reliability, Fault Tolerance, Concurrency and Real Time, Security. Proceedings of the Ninth Annual Conference on. IEEE, 107–120 ident: e_1_2_2_32_1 – volume-title: Transparent fault tolerance for scalable functional computation. Journal of Functional Programming 26 year: 2016 ident: e_1_2_2_53_1 – ident: e_1_2_2_17_1 – ident: e_1_2_2_30_1 doi: 10.1145/199448.199528 – ident: e_1_2_2_25_1 doi: 10.1016/S0167-6423(99)00023-4 – ident: e_1_2_2_39_1 doi: 10.5555/647765.735995 – ident: e_1_2_2_41_1 – volume: 7 start-page: 1999 year: 1999 ident: e_1_2_2_16_1 article-title: A model of cooperative noninterference for integrated modular avionics publication-title: Dependable Computing for Critical Applications – volume-title: High Performance Computing and Communications year: 2016 ident: e_1_2_2_59_1 – ident: e_1_2_2_13_1 doi: 10.1145/871895.871897 – ident: e_1_2_2_49_1 – volume-title: The semantic marriage of monads and effects. CoRR abs/1401.5391 year: 2014 ident: e_1_2_2_38_1 – ident: e_1_2_2_1_1 – ident: e_1_2_2_10_1 doi: 10.1145/2544174.2500581 – ident: e_1_2_2_45_1 doi: 10.1145/3110246 – ident: e_1_2_2_42_1 doi: 10.1145/1596550.1596582 – ident: e_1_2_2_28_1 doi: 10.1145/2560537 – ident: e_1_2_2_44_1 doi: 10.1145/2976002.2976010 – ident: e_1_2_2_54_1 doi: 10.1007/978-3-642-40447-4_16 – ident: e_1_2_2_43_1 doi: 10.1145/3122955.3122957 – ident: e_1_2_2_48_1 doi: 10.1007/978-3-642-29860-8_23 – volume-title: Proceedings of the 4th European Congress on Embedded Real Time Software (ERTSâĂŹ08) year: 2008 ident: e_1_2_2_18_1 – ident: e_1_2_2_15_1 doi: 10.5555/647537.729692 – ident: e_1_2_2_51_1 doi: 10.1016/0167-6423(90)90056-J – ident: e_1_2_2_23_1 doi: 10.1109/5.97300 – ident: e_1_2_2_47_1 doi: 10.5555/1939399.1939428 – ident: e_1_2_2_2_1 doi: 10.1145/1465611.1465708 – ident: e_1_2_2_26_1 doi: 10.1145/2578855.2535846 – ident: e_1_2_2_50_1 – ident: e_1_2_2_57_1 doi: 10.5555/5280.5288 – ident: e_1_2_2_7_1 doi: 10.1109/5.97299 – ident: e_1_2_2_31_1 doi: 10.1145/199448.199528 – ident: e_1_2_2_22_1 doi: 10.1017/S0956796805005721 – ident: e_1_2_2_5_1 – ident: e_1_2_2_14_1 doi: 10.1145/287000.287023 – volume-title: Symposium on Implementation and Application of Functional Languages. Springer, 107–121 year: 2000 ident: e_1_2_2_24_1 – ident: e_1_2_2_3_1 doi: 10.1109/TC.1976.1674598 – ident: e_1_2_2_29_1 doi: 10.1145/1629575.1629596 – ident: e_1_2_2_58_1 doi: 10.1145/1159803.1159809 – ident: e_1_2_2_21_1 doi: 10.1145/2096148.2034690 – ident: e_1_2_2_36_1 doi: 10.1145/2633357.2633368 – ident: e_1_2_2_33_1 doi: 10.5555/647762.735509 |
| SSID | ssj0001934839 |
| Score | 2.0826802 |
| Snippet | Highly critical application domains, like medicine and aerospace, require the use of strict design, implementation and validation techniques. Functional... |
| SourceID | crossref |
| SourceType | Enrichment Source Index Database |
| StartPage | 1 |
| Title | Fault tolerant functional reactive programming (functional pearl) |
| Volume | 2 |
| WOSCitedRecordID | wos000461309200030&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3BatwwEBXbtIde2rRNadom6BBCQnC7lmSPdFyWLMkhYQ8p5LbY1hgKrrNsnCWnfntHtuwV20LbQy7CFiPb6Ik345FmhrGjcSrKEgkBOwZwrpssypVOI6nGCvNUa5sVbbEJuL7Wt7dmPhoNUfzrCupaPz6a5ZNCTX0Etgud_Q-4h4dSB10T6NQS7NT-E_Cz7KFqyKSskNRQc-YUl_f3kX3Yslt_KOuHdxMEIkuajar3DnibdT7ouPbYx2R65XYYwmf0Ts_7DdGuOs_05dqvPu9YiPVwcsrzj1CQRLHqApi_4B_6PIGKYJ1cTmfzgA_jQLF2-y-_U7Zy2S2kyyRn4o1W6nfit5TVcISwC6hOFn7gM_ZcQGIcNV_9DLxsRirdlpMbvryLnHZjv_qxgUkS2BY3u-yV_yngkw7MN2yE9Vv2ui-4wT3_vmOTFlveY8s3wPEeWx7gwk8CgRbZ0z32bXZ-M72IfA2MqBCJbiIrM1tCLDFOrQFXylRaEHmCJQiUECPZ7zqxVpRFWiqFCsYIsaE7lYjMavme7dR3NX5gXGKGANTogmjbgEGDaS4sKHqBwXyfHffTsCh8gnhXp6RabM31PuOD4LLLibIt8vHvIp_Yy82q-8x2mtUDHrAXxbr5fr86bGH8BeM8VBY |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Fault+tolerant+functional+reactive+programming+%28functional+pearl%29&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Perez%2C+Ivan&rft.date=2018-09-01&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=2&rft.issue=ICFP&rft.spage=1&rft.epage=30&rft_id=info:doi/10.1145%2F3236791&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3236791 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |