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...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Proceedings of ACM on programming languages Ročník 2; číslo ICFP; s. 1 - 30
Hlavní autor: Perez, Ivan
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