首页 > 最新文献

Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang最新文献

英文 中文
Structuring Erlang BEAM control flow 构建Erlang BEAM控制流程
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123572
D. Lukács, M. Tóth
As source code dependencies are usually stored in some precompiled executable representation like bytecode, static analysis frameworks for high-level languages have to be specifically adapted so they can meaningfully analyse these libraries too. This adaptation is not trivial, since compilation is in general not injective, the semantics of low-level instruction sets are often not specified adequately, and the structure of the high-level sources and the low-level target is considerably different. This is also true for the functional Erlang programming language and its assembly-like BEAM bytecode. In this paper, we present a structuring algorithm capable of recovering the Erlang syntax tree of functional branching expressions compiled to BEAM. The implementation of the presented algorithm is part of the RefactorErl static analyser framework. Therefore, the tool is able to represent the semantics of the BEAM programs with an Erlang syntax tree and perform further semantic analysis on it to discover the source dependencies.
由于源代码依赖关系通常存储在一些预编译的可执行表示(如字节码)中,因此必须对高级语言的静态分析框架进行专门调整,以便它们也能有意义地分析这些库。这种调整不是微不足道的,因为编译通常不是内射的,低级指令集的语义通常没有充分指定,而且高级源和低级目标的结构有很大的不同。对于函数式Erlang编程语言及其类似于汇编的BEAM字节码也是如此。在本文中,我们提出了一种能够恢复编译到BEAM的函数分支表达式的Erlang语法树的结构化算法。该算法的实现是RefactorErl静态分析器框架的一部分。因此,该工具能够用Erlang语法树表示BEAM程序的语义,并对其执行进一步的语义分析,以发现源依赖关系。
{"title":"Structuring Erlang BEAM control flow","authors":"D. Lukács, M. Tóth","doi":"10.1145/3123569.3123572","DOIUrl":"https://doi.org/10.1145/3123569.3123572","url":null,"abstract":"As source code dependencies are usually stored in some precompiled executable representation like bytecode, static analysis frameworks for high-level languages have to be specifically adapted so they can meaningfully analyse these libraries too. This adaptation is not trivial, since compilation is in general not injective, the semantics of low-level instruction sets are often not specified adequately, and the structure of the high-level sources and the low-level target is considerably different. This is also true for the functional Erlang programming language and its assembly-like BEAM bytecode. In this paper, we present a structuring algorithm capable of recovering the Erlang syntax tree of functional branching expressions compiled to BEAM. The implementation of the presented algorithm is part of the RefactorErl static analyser framework. Therefore, the tool is able to represent the semantics of the BEAM programs with an Erlang syntax tree and perform further semantic analysis on it to discover the source dependencies.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130784814","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
The shared-memory interferences of Erlang/OTP built-ins Erlang/OTP内置的共享内存干扰
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123573
Stavros Aronis, Konstantinos Sagonas
Erlang is a concurrent functional language based on the actor model of concurrency. In the purest form of this model, actors are realized by processes that do not share memory and communicate with each other exclusively via message passing. Erlang comes quite close to this model, as message passing is the primary form of interprocess communication and each process has its own memory area that is managed by the process itself. For this reason, Erlang is often referred to as implementing ``shared nothing'' concurrency. Although this is a convenient abstraction, in reality Erlang's main implementation, the Erlang/OTP system, comes with a large number of built-in operations that access memory which is shared by processes. In this paper, we categorize these built-ins, and characterize the interferences between them that can result in observable differences of program behaviour when these built-ins are used in a concurrent setting. The paper is complemented by a publicly available suite of more than one hundred small Erlang programs that demonstrate the racing behaviour of these built-ins.
Erlang是一种基于参与者并发模型的并发函数式语言。在这个模型的最纯粹的形式中,参与者是由进程实现的,这些进程不共享内存,并且通过消息传递专门地相互通信。Erlang非常接近这个模型,因为消息传递是进程间通信的主要形式,每个进程都有自己的内存区域,由进程自己管理。由于这个原因,Erlang通常被称为实现“无共享”并发。虽然这是一个方便的抽象,但实际上Erlang的主要实现,Erlang/OTP系统,带有大量的内置操作来访问由进程共享的内存。在本文中,我们对这些内置组件进行了分类,并描述了它们之间的干扰,当这些内置组件在并发设置中使用时,这些干扰可能导致程序行为的可观察差异。这篇论文是由一百多个公开的小Erlang程序组成的,这些程序展示了这些内置程序的竞速行为。
{"title":"The shared-memory interferences of Erlang/OTP built-ins","authors":"Stavros Aronis, Konstantinos Sagonas","doi":"10.1145/3123569.3123573","DOIUrl":"https://doi.org/10.1145/3123569.3123573","url":null,"abstract":"Erlang is a concurrent functional language based on the actor model of concurrency. In the purest form of this model, actors are realized by processes that do not share memory and communicate with each other exclusively via message passing. Erlang comes quite close to this model, as message passing is the primary form of interprocess communication and each process has its own memory area that is managed by the process itself. For this reason, Erlang is often referred to as implementing ``shared nothing'' concurrency. Although this is a convenient abstraction, in reality Erlang's main implementation, the Erlang/OTP system, comes with a large number of built-in operations that access memory which is shared by processes. In this paper, we categorize these built-ins, and characterize the interferences between them that can result in observable differences of program behaviour when these built-ins are used in a concurrent setting. The paper is complemented by a publicly available suite of more than one hundred small Erlang programs that demonstrate the racing behaviour of these built-ins.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129644918","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Towards an Isabelle/HOL formalisation of core Erlang 走向核心Erlang的Isabelle/HOL形式化
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123576
J. Harrison
As part of broader work to improve the safety of Erlang systems, we are attempting to detect (and prevent) messages which remain forever unreceived in process' mailboxes using a mix of static and runtime analysis. We have formalised the communicating portion of Core Erlang using Isabelle/HOL, an interactive theorem prover. We can use the Isabelle toolchain to prove properties of our model, automatically prepare documents, and generate verified executable code in a variety of functional programming languages. We formally model a communicating fragment of Core Erlang in a language we call CoErl. After defining the evaluation of expressions, we model the process-local and concurrent semantics of the language using a labelled transition system. We also introduce the notion of mailbox traces which capture communication events during process execution. This is followed by some illustrative examples of the concurrent semantics. Although our CoErl model is a solid foundation for a full formalisation of Core Erlang, it currently lacks higher-order and recursive behaviour. Isabelle/HOL has proved practical for formalising and verifying several properties of CoErl and its trace system, while ongoing and future work focuses on bringing the language to feature parity with Core Erlang and Erlang/OTP.
作为提高Erlang系统安全性的更广泛工作的一部分,我们正在尝试使用静态和运行时分析的混合方法来检测(并防止)进程邮箱中永远未接收的消息。我们已经使用Isabelle/HOL(一个交互式定理证明器)形式化了Core Erlang的通信部分。我们可以使用Isabelle工具链来证明模型的属性,自动准备文档,并用各种函数式编程语言生成经过验证的可执行代码。我们用一种叫做corel的语言正式地为Core Erlang的通信片段建模。在定义表达式的求值之后,我们使用标记转换系统对语言的过程局部和并发语义进行建模。我们还介绍了邮箱跟踪的概念,它捕获进程执行期间的通信事件。接下来是并发语义的一些说明性示例。虽然我们的corel模型是Core Erlang完整形式化的坚实基础,但它目前缺乏高阶和递归行为。Isabelle/HOL在形式化和验证corel及其跟踪系统的几个属性方面已经被证明是实用的,而正在进行和未来的工作将重点放在使该语言与Core Erlang和Erlang/OTP具有相同的功能上。
{"title":"Towards an Isabelle/HOL formalisation of core Erlang","authors":"J. Harrison","doi":"10.1145/3123569.3123576","DOIUrl":"https://doi.org/10.1145/3123569.3123576","url":null,"abstract":"As part of broader work to improve the safety of Erlang systems, we are attempting to detect (and prevent) messages which remain forever unreceived in process' mailboxes using a mix of static and runtime analysis. We have formalised the communicating portion of Core Erlang using Isabelle/HOL, an interactive theorem prover. We can use the Isabelle toolchain to prove properties of our model, automatically prepare documents, and generate verified executable code in a variety of functional programming languages. We formally model a communicating fragment of Core Erlang in a language we call CoErl. After defining the evaluation of expressions, we model the process-local and concurrent semantics of the language using a labelled transition system. We also introduce the notion of mailbox traces which capture communication events during process execution. This is followed by some illustrative examples of the concurrent semantics. Although our CoErl model is a solid foundation for a full formalisation of Core Erlang, it currently lacks higher-order and recursive behaviour. Isabelle/HOL has proved practical for formalising and verifying several properties of CoErl and its trace system, while ongoing and future work focuses on bringing the language to feature parity with Core Erlang and Erlang/OTP.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"83 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129327388","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Distributed memory architecture for high-level synthesis of embedded controllers from Erlang 用于Erlang嵌入式控制器高级合成的分布式内存体系结构
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123574
Kagumi Azuma, N. Ishiura, Nobuaki Yoshida, H. Kanbara
This paper presents a distributed memory architecture for dedicated hardware automatically synthesized from Erlang programs. Our team had developed a framework for generating embedded systems controllers whose behavior was specified by a subset of Erlang, where each process was mapped into hardware (a logic circuit) running independently of the circuits for the other processes. However, the resulting hardware was not of practical use because it shared a single main memory potentially accessed by all the circuits for the processes simultaneously. To address this issue, in this paper, the main memory is partitioned into banks so that each process can access its own memory independently of the other processes. In order to keep the interconnections for message passing to a practical size, a bus architecture is employed where send requests are arbitrated by an arbiter (logic circuit). In order to make the resulting hardware as small as possible, a garbage collection circuit is shared among the circuits for the processes also under the control of the arbiter. From a simple Erlang specification, Verilog HDL codes for necessary hardware to construct a system has been generated.
本文提出了一种由Erlang程序自动合成的专用硬件分布式内存体系结构。我们的团队已经开发了一个框架,用于生成嵌入式系统控制器,其行为由Erlang的一个子集指定,其中每个进程都映射到独立于其他进程的电路运行的硬件(逻辑电路)中。然而,最终的硬件没有实际用途,因为它共享一个主存,可能被进程的所有电路同时访问。为了解决这个问题,在本文中,主存被划分为银行,这样每个进程都可以独立于其他进程访问自己的内存。为了使消息传递的互连保持在一个实际的大小,采用了一种总线体系结构,其中发送请求由仲裁器(逻辑电路)仲裁。为了使产生的硬件尽可能小,在仲裁器控制下的进程的电路之间共享一个垃圾收集电路。从一个简单的Erlang规范,Verilog HDL代码为必要的硬件构造一个系统已经生成。
{"title":"Distributed memory architecture for high-level synthesis of embedded controllers from Erlang","authors":"Kagumi Azuma, N. Ishiura, Nobuaki Yoshida, H. Kanbara","doi":"10.1145/3123569.3123574","DOIUrl":"https://doi.org/10.1145/3123569.3123574","url":null,"abstract":"This paper presents a distributed memory architecture for dedicated hardware automatically synthesized from Erlang programs. Our team had developed a framework for generating embedded systems controllers whose behavior was specified by a subset of Erlang, where each process was mapped into hardware (a logic circuit) running independently of the circuits for the other processes. However, the resulting hardware was not of practical use because it shared a single main memory potentially accessed by all the circuits for the processes simultaneously. To address this issue, in this paper, the main memory is partitioned into banks so that each process can access its own memory independently of the other processes. In order to keep the interconnections for message passing to a practical size, a bus architecture is employed where send requests are arbitrated by an arbiter (logic circuit). In order to make the resulting hardware as small as possible, a garbage collection circuit is shared among the circuits for the processes also under the control of the arbiter. From a simple Erlang specification, Verilog HDL codes for necessary hardware to construct a system has been generated.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132668571","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Construction and formal verification of a fault-tolerant distributed mutual exclusion algorithm 一种容错分布式互斥算法的构造与形式化验证
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123571
E. Shishkin
Distributed fault-tolerant control algorithms are in great demand nowadays due to their practical importance in cloud computing, Internet of Things (IoT) technology, swarm robotics, and other areas. It is usually hard to make a distributed algorithm fault-tolerant. It is even harder to ensure that such algorithm behaves correctly in the presence of faults of some kind. In this work, we construct a reliable, adaptive, fault-tolerant distributed mutual exclusion algorithm based on the well-known Ricart-Agrawala algorithm. In order to formally verify it, we use a hybrid approach of deductive reasoning and bounded model-checking. First, a safety property of the Ricart-Agrawala algorithm is proved in Calculus of Inductive Constructions of Coq proof assistant using assertional reasoning. Then, an extension of that algorithm turning it into fault-tolerant and adaptive to participants set change, is formalized in TLA and checked on a bounded model. Besides constructing and verifying the algorithm, this work aims to familiarize those interested in constructing highly reliable components with well established verification methods that were used to verify the proposed algorithm.
由于分布式容错控制算法在云计算、物联网(IoT)技术、群体机器人等领域的实际重要性,目前对分布式容错控制算法的需求很大。通常很难使分布式算法具有容错性。要确保这种算法在出现某种错误时能正确地工作就更难了。本文在Ricart-Agrawala算法的基础上,构造了一种可靠、自适应、容错的分布式互斥算法。为了正式验证它,我们使用了演绎推理和有界模型检查的混合方法。首先,在Coq证明辅助的归纳构造演算中,用断言推理证明了Ricart-Agrawala算法的一个安全性质。然后,对该算法进行了扩展,使其具有容错性和对参与者集合变化的适应性,并在TLA中进行了形式化,并在有界模型上进行了检验。除了构建和验证算法之外,本工作的目的是让那些对构建高可靠组件感兴趣的人熟悉用于验证所提出算法的成熟验证方法。
{"title":"Construction and formal verification of a fault-tolerant distributed mutual exclusion algorithm","authors":"E. Shishkin","doi":"10.1145/3123569.3123571","DOIUrl":"https://doi.org/10.1145/3123569.3123571","url":null,"abstract":"Distributed fault-tolerant control algorithms are in great demand nowadays due to their practical importance in cloud computing, Internet of Things (IoT) technology, swarm robotics, and other areas. It is usually hard to make a distributed algorithm fault-tolerant. It is even harder to ensure that such algorithm behaves correctly in the presence of faults of some kind. In this work, we construct a reliable, adaptive, fault-tolerant distributed mutual exclusion algorithm based on the well-known Ricart-Agrawala algorithm. In order to formally verify it, we use a hybrid approach of deductive reasoning and bounded model-checking. First, a safety property of the Ricart-Agrawala algorithm is proved in Calculus of Inductive Constructions of Coq proof assistant using assertional reasoning. Then, an extension of that algorithm turning it into fault-tolerant and adaptive to participants set change, is formalized in TLA and checked on a bounded model. Besides constructing and verifying the algorithm, this work aims to familiarize those interested in constructing highly reliable components with well established verification methods that were used to verify the proposed algorithm.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127948057","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
eAOP: an aspect oriented programming framework for Erlang eAOP:面向方面的Erlang编程框架
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123570
I. Cassar, Adrian Francalanza, L. Aceto, A. Ingólfsdóttir
Aspect oriented programming (AOP) is a paradigm ideal for defining cross-cutting concerns within an existing application. Although several AOP frameworks exist for more renowned languages such as Java and C#, little to no frameworks have been developed for actor oriented languages such as Erlang. We thus present eAOP, a new AOP framework specifically designed to instrument actor-oriented constructs in Erlang such as message sends and receives, along with other traditional constructs such as function calls.
面向方面编程(AOP)是在现有应用程序中定义横切关注点的理想范例。尽管针对Java和c#等知名语言存在一些AOP框架,但针对面向参与者的语言(如Erlang)开发的框架很少,甚至没有。因此,我们提出了eAOP,这是一个新的AOP框架,专门设计用于在Erlang中描述面向参与者的结构,如消息发送和接收,以及其他传统结构,如函数调用。
{"title":"eAOP: an aspect oriented programming framework for Erlang","authors":"I. Cassar, Adrian Francalanza, L. Aceto, A. Ingólfsdóttir","doi":"10.1145/3123569.3123570","DOIUrl":"https://doi.org/10.1145/3123569.3123570","url":null,"abstract":"Aspect oriented programming (AOP) is a paradigm ideal for defining cross-cutting concerns within an existing application. Although several AOP frameworks exist for more renowned languages such as Java and C#, little to no frameworks have been developed for actor oriented languages such as Erlang. We thus present eAOP, a new AOP framework specifically designed to instrument actor-oriented constructs in Erlang such as message sends and receives, along with other traditional constructs such as function calls.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117217671","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Towards change-driven testing 朝着变更驱动测试的方向发展
Pub Date : 2017-09-08 DOI: 10.1145/3123569.3123575
Viktória Fördős, István Bozó, M. Tóth
Engineering complex business critical systems that should never stop or fail is very much challenging. In Klarna, we tackle this challenge day by day. The secret sauce, which enables us to ensure the highest software quality, is the thorough validation process. However, one must pay the price of such validation process, which is essentially time. In this paper we present our initial work on fast tracking the validation of code changes without compromising software quality and give a preliminary evaluation on our technique.
设计永不停止或失败的复杂业务关键系统是非常具有挑战性的。在Klarna,我们每天都在应对这个挑战。使我们能够确保最高软件质量的秘诀是彻底的验证过程。然而,人们必须为这种验证过程付出代价,这本质上是时间。在本文中,我们介绍了我们在不影响软件质量的情况下快速跟踪代码更改验证的初步工作,并对我们的技术进行了初步评估。
{"title":"Towards change-driven testing","authors":"Viktória Fördős, István Bozó, M. Tóth","doi":"10.1145/3123569.3123575","DOIUrl":"https://doi.org/10.1145/3123569.3123575","url":null,"abstract":"Engineering complex business critical systems that should never stop or fail is very much challenging. In Klarna, we tackle this challenge day by day. The secret sauce, which enables us to ensure the highest software quality, is the thorough validation process. However, one must pay the price of such validation process, which is essentially time. In this paper we present our initial work on fast tracking the validation of code changes without compromising software quality and give a preliminary evaluation on our technique.","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-09-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127766208","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang 第16届ACM SIGPLAN Erlang国际研讨会论文集
{"title":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","authors":"","doi":"10.1145/3123569","DOIUrl":"https://doi.org/10.1145/3123569","url":null,"abstract":"","PeriodicalId":106017,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang","volume":"257 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132880819","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Proceedings of the 16th ACM SIGPLAN International Workshop on Erlang
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1