21 research outputs found
Observations on the Life History of the Goldeye, Hiodon Alosoides (Rafinesque), in Moccasin Bay on the Little Missouri Arm, Garrison Reservoir, North Dakota
The life history and population structure of goldeye, Hiodon alosoides (Rafinesque), in Moccasin Bay, Garrison Reservoir, North Dakota, were investigated during 1966 and 1967. This species had not been commercially exploited in this impoundment, but current populations indicate that a commercial fishery can be supported.
A gill net fished from the surface to the bottom captured 885 goldeye in 1966. Total-length, weight, and sex were recorded and scale samples collected. The length-frequency of the catch was plotted, and average rate of growth of seven year-classes was calculated by examination of scales from 365 fish. Length-weight relationships and sex ratios were determined. The ages at which sexual dimorphism of the anal fin could be recognized were established.
Experimental gill nets fished in surface waters took 1,601 goldeye in the spring of 1967. Spawning activity and duration were related to surface water temperatures at various reservoir locations. A sex ratio was calculated from 531 fish captured at spawning sites. Fecundity was calculated for each of 25 gravid females, and age at sexual maturity was determined from 25 females and 10 males in spawning condition. Fine-mesh plankton nets were used in unsuccessful attempts to collect spawned ova. Twenty-five stomachs were collected, and the frequency of occurrence of food organisms was noted. Parasitic helminths were collected from the alimentary tracts of 30 goldeye, and all were identified as Bothriocephalus cuspidatus Cooper
on the Syntactic Theories of Sequential Control and State
The syntactic theories of control and state are conservative extensions of the λv-calculus for equational reasoning about imperative programming facilities in higher-order languages. Unlike the simple λv-calculus, the extended theories are mixtures of equivalence relations and compatible congruence relations on the term language, which significantly complicates the reasoning process. In this paper we develop fully compatible equational theories of the same imperative higher-order programming languages. The new theories subsume the original calculi of control and state and satisfy the usual Church-Rosser and Standardization Theorems. With the new calculi, equational reasoning about imperative programs becomes as simple as reasoning about functional programs. 1 The syntactic theories of control and state Most λ-calculus-based programming languages provide imperative programming facilities such as assignment statements, exceptions, and continuations. Typical examples are ML [16], Scheme [19], and Common Lisp [20]. While these additions add expressive power and increas
c ○ 1994 Kluwer Academic Publishers – Manufactured in The Netherlands
Abstract. Continuations have proven to be useful for implementing a variety of control structures, including exception handling facilities and breadth-first searching algorithms. However, traditional continuations are not useful in the presence of concurrency, because the notion of the rest of the computation represented by a continuation does not in general make sense. Traditional continuations can also be difficult to use in nonconcurrent settings, since their global nature is sometimes problematic. This article presents a new type of continuation, called a subcontinuation. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a subcontinuation represents the rest of a subcomputation from a given point in the subcomputation. Subcontinuations may be used to control tree-structured concurrency by allowing nonlocal exits to arbitrary points in a process tree and allowing the capture of a subtree of a computation as a composable continuation for later use. In the absence of concurrency the localized control achievable with subcontinuations makes them more useful than traditional continuations. 1
A new approach to procedures with variable arity
Keywords: Abstract. This article presents a convenient and efficient procedural interface that allows the definition and use of procedures with optional arguments and indefinite numbers of arguments without resorting to the use of a language-dependent data structure in which to store the arguments. This interface solves many of the problems inherent in the use of lists in Lisp and Scheme to store indefinite numbers of arguments. Simple recursion can be used to consume such arguments without the complexity problems that are caused by the use of the Lisp procedure apply on argument lists. A natural extension to the interface to support multiple return values is presented.
The Revised Report on the Syntactic Theories of Sequential Control and State
The syntactic theories of control and state are conservative extensions of the v -calculus for equational reasoning about imperative programming facilities in higher-order languages. Unlike the simple v -calculus, the extended theories are mixtures of equivalence relations and compatible congruence relations on the term language, which significantly complicates the reasoning process. In this paper we develop fully compatible equational theories of the same imperative higher-order programming languages. The new theories subsume the original calculi of control and state and satisfy the usual Church-Rosser and Standardization Theorems. With the new calculi, equational reasoning about imperative programs becomes as simple as reasoning about functional programs
A New Approach to Procedures with Variable Arity
. This article presents a convenient and efficient procedural interface that allows the definition and use of procedures with optional arguments and indefinite numbers of arguments without resorting to the use of a language-dependent data structure in which to store the arguments. This interface solves many of the problems inherent in the use of lists in Lisp and Scheme to store indefinite numbers of arguments. Simple recursion can be used to consume such arguments without the complexity problems that are caused by the use of the Lisp procedure apply on argument lists. A natural extension to the interface to support multiple return values is presented. 1 Introduction Many programming languages provide primitive procedures that are defined for variable numbers of arguments. Typically, however, the programmer is not provided with a convenient way to create new variable-arity procedures. Although Common Lisp [6] and Scheme [5] both allow the programmer to define variable-arity procedures..
Engines from Continuations
Engines provide the means for a computation to be run for a limited period of time, interrupted if it does not complete in that time, and later restarted from the point of interruption. Previous work on engines demonstrated that engines can be implemented by defining a new interpreter to support them. This article demonstrates that engines may be defined in terms of continuations and timer interrupts and thereby incorporated into an existing language implementation. The article extends the engine mechanism to solve several problems with nestable engines, and demonstrates that the extended mechanism can be implemented in terms of continuations as well
Syntactic Abstraction in Scheme
Naive program transformations can have surprising effects due to the interaction between introduced identifier references and previously existing identifier bindings, or between introduced bindings and previously existing references. These interactions can result in inadvertent binding, or capturing, of identifiers. A further complication is that transformed programs may have little resemblance to original programs, making correlation of source and object code difficult. This article describes an efficient macro system that prevents inadvertent capturing while maintaining the correlation between source and object code. The macro system allows the programmer to define program transformations using an unrestricted, general-purpose language. Previous approaches to the capturing problem have been inadequate, overly restrictive, or inefficient, and the problem of source-object correlation has been largely unaddressed. The macro system is based on a new algorithm for implementing syntactic transformations and a new representation for syntactic expressions
Destination-driven code generation
Destination-driven code generation is a simple top-down technique that allows the code generated for a program phrase to depend upon its context in an abstract syntax tree. The context is encapsulated in a data destination and a control destination. The data destination specifies where the value computed by an expression is to be stored, while the control destination specifies where program execution is to resume after computation of the value. Together, the destinations allow a code generator to specify data and control flow dependencies between subcomputations. As a result, these subcomputations can be “wired ” together in an efficient manner. We illustrate the technique by presenting a code generator for a subset of the programming language C. This technique has been used in the implementation of an incremental compiler for the Scheme programming language that generates code for one of several computer architectures.