当前位置:文档之家› Deforesting in accumulating parameters via type-directed transformations

Deforesting in accumulating parameters via type-directed transformations

Deforesting in Accumulating Parameters via Type-Directed Transformations

Susumu Nishimura

RIMS,Kyoto University

Sakyo-ku606–8502,JAPAN

nisimura@kurims.kyoto-u.ac.jp

Abstract

Classical deforestation methods fail to compose func-

tions with accumulating parameters,which are func-

tion arguments to which intermediate result accumu-

lates.This paper proposes a new deforestation method

which solves this problem.The method is comprised of

a few transformation steps,each of which is guided by

type information.Though our solution draws its funda-

mental idea from a deforestation method that has been

developed for attribute grammars,it is not merely a re-

cast of an existing technique to another formalism.The

new method provides a type-based account for the exist-

ing attribute grammar deforestation process.Further,it

can deforest a class of functions that the attribute gram-

mar deforestation cannot.These advantages are demon-

strated by a few examples.It is also shown that the new

method is as powerful as another method that has been

developed for macro tree transducer composition.

1Introduction

In functional programming languages,it is common to

de?ne a function by a composition of two functions,one

of which produces an intermediate data structure that

is immediately consumed by the other function.This

compositional style of programming promotes the de-

sirable modular program development,but on the other

hand inef?ciency is caused by the temporary production

of the intermediate data.

To remedy this de?ciency of functional program-

ming,Wadler[22]proposed a program transforma-

tion technique,called deforestation,which automati-

cally derives a single function de?nition that does not

programs that can be expressed by attribute grammars is rather small and the class of composable programs by the attribute grammar composition method is further limited(see Section4for details).

This paper is intended to?x the above problems by incorporating the attribute grammar composition method into the functional programming paradigm.The major contribution of this paper is twofold.

First,our method provides a clear account for the attribute grammar composition process from the func-tional programming side.The composition process is divided into a few smaller transformation steps,each of which is easier to understand than the whole transfor-mation.Further,types serve as a superior guide that directs each subtransformation a right way to go. Second,our deforestation method is able to compose more programs than the attribute grammar composition method is.Our deforestation method is formulated in the framework of functional programming,whose high expressiveness makes it possible to reveal the hidden power of the attribute grammar composition method be-hind the limitation of the attribute grammar formalism. Recently,a powerful deforestation method has been proposed by V oigtl¨a nder and K¨u hnemann[18,20,19]. Their method is based on the framework of macro tree transducers[5],which are a close relative of attribute grammars.Their composition method substantially ex-tends the class of composable programs than the at-tribute grammar composition method.An evidence shows that their method is as powerful as ours,as we will discuss in Section4.

Related work

Our transformation method is closer to shortcut fusion [9],which is another deforestation method.Shortcut fusion can deforest a large class of programs by a lo-cal transformation rule for foldr/build consumer-producer pairs.This distinguishes shortcut fusion from Wadler’s deforestation,which is based on the general folding/unfolding transformation[2].Our transforma-tion method is not driven by the folding/unfolding trans-formation either,but by a small set of transformation rules(including both local and non-local ones).Hence our method is closer to shortcut fusion.

Several researchers have tackled the problem of deforesting functions with accumulating parameters. Sheard and Fegaras[15]proposed second-order fu-sion to deforest higher-order functions.However,their deforestation method requires a post-processing that

assumes a particular algebraic property of programs, which is not easily mechanizable.Svenningsson pro-posed a fusion rule to cancel destroy/unfoldr pairs,which are dual of foldr/build pairs in short-cut fusion[16].However,his method can only deal with accumulating parameters in consumer functions.

In connection to attribute grammars,Correnson et.al.

[4]utilized the attribute grammar composition method in order to deforest functional programs,by a trans-lation of functional programs into attribute grammars. This however indicates that the ability of their defor-estation method is limited by that of attribute grammars. Kakehi et.al.[12]proposed a fusion method for gen-eralized map functions that capture a few features of the attribute grammar composition method.In contrast, ours covers the full features of it.

To the best of our knowledge,the above men-tioned macro tree transducer composition method by V oigtl¨a nder and K¨u hnemann appears to be the only one which is as powerful as ours in its ability of deforesta-tion.However,their deforestation strategy is quite dif-ferent from ours.Theirs is closer to the classical defor-estation method in the sense that the program transfor-mation is driven by the folding/unfolding transforma-tion.In contrast,ours is closer to shortcut fusion,as we mentioned earlier.Furthermore,ours is characterized by the extensive use of type information that directs the whole program transformation process.

Outline

The rest of this paper is organized as follows.Sec-tion2gives a complete example of our deforestation method.Section3formalizes our method.Section4 compares our deforestation method with other methods for attribute grammars and for macro tree transducers. Finally,Section5concludes the paper with a few future research topics.

2Deforestation by Example

This section demonstrates a complete deforestation pro-cess by an example.

The example is written in Haskell notation[10]ex-tended with records and variants.A record is a labeled product,written l1M1l n M n n0and a variant is a disjoint sum injected by a label,written

l M.A?eld selection on a record M at the?eld 2

l is written#l M,and a case expression

case M of l1x1M1;;l1x n M n selects an appropriate clause depending on the injection label of variant M evaluates to.

For the sake of readability,we may use standard pat-tern matching notations on records,say,\h x x for a syntactic shorthand of\x#h x.

The notation for types are standard.We write l1::τ1l n::τn for a record type whose set of?eld labels are l1l n andτ1τn are associated?eld types. Similarly,we write l1::τ1l n::τn for a variant type,where l1l n are possible injection labels.In this section,we assume the standard(monomorphic) typing rules for records and variants.For technical rea-sons,however,we in fact need a non-standard typing rules for variants;See Section3for details.

2.1The source program

The example program considered in this section is given in Figure1.The function flat takes a binary tree rep-resentation(speci?ed by the algebraic data type T)and outputs an integer list(the algebraic type L)of leaf val-ues generated by two repeated pre-order traversals over the binary tree.The function accomplishes the couple of traversals by a single recursive call to the input tree, using the circular let de?nition[1].The function rev is the standard list reverse function with an accumulat-ing parameter.The goal of transformation is to deforest revflat,the composition of flat followed by rev. In the program,each recursive function is de?ned by using records.For example,the rev function de?nition in Introduction has type L L L,but it is rede?ned as a function of type L h::L rev::L.Note that the use of records does not mean that all the?eld values in a record to be evaluated simultaneously.Due to Haskell’s lazy semantics,they are computed indepen-dently on demand.

This rede?nition is aimed at having the structure of the source program closer to that of attribute grammars: The set of inputs and the set of outputs(the former cor-responds to the so-called inherited attributes and the lat-ter to the so-called synthesized attributes[11])are made explicit and each input/output value is uniquely identi-?ed by a label.This makes it possible to incorporate the idea of the attribute grammar composition method into the functional programming paradigm.Also,record types play a signi?cant role in the proceeding transfor-mation procedure.

2.2Shortcut fusion applied

Our deforestation process starts with an application of the well-known shortcut fusion transformation[9,17].

To apply the shortcut fusion rule,we de?ne flat’, which is another version of flat that abstracts over constructor functions,and foldr/build operators for lists.

flat’::

T(Integer a a)a

(l::a,j::a)(fl::a,fj::a) flat’(Node(t1,t2))=

\c nl(l=l,j=j)->

let syn1=flat’t1c nl(l=l,j=j)

syn2=flat’t2c nl

(l=#fl syn1,j=#fj syn1) in(fl=#fl syn2,fj=#fj syn2)

flat’(Leaf n)=

\c nl(l=l,j=j)->

(fl=c n l,fj=c n j)

foldr::(Integer a a)a L a

foldr k z Nil=z

foldr k z(Cons(n,l))=k n(foldr k z l) build::((Integer L L)L a)a build g=g(Cons)Nil

where(Cons)denotes the curried list constructor func-tion.

Then revflat are rede?ned as follows,by means of foldr/build operators.

revflat x=

#rev((let r=build(flat’x)

(l=#fj r,j=Nil)

in foldr c nl(#fl r))

(h=Nil))

where c=\n l->\(h=h)->

let syn=l(h=Cons(n,h))

in(rev=#rev syn)

nl=\(h=h)->(rev=h)

The following rewrite rule of the shortcut fusion al-lows us to cancel foldr/build pairs.

foldr k z#j q build g l1e1l n e n

#j q g k z

l1foldr k z e1l n foldr k z e n Notice that this rewrite rule is different from that of the original one:Auxiliary record operations are in-volved,since input and output of the recursive function de?nition involves those operations.For the correctness of the altered transformation rule,see Appendix A.

3

data T=Node(T,T)|Leaf Integer

data L=Cons(Integer,L)|Nil

flat::T(l::L,j::L)

(fl::L,fj::L)

flat(Node(t1,t2))(l=l,j=j)=

let syn1=flat t1(l=l,j=j)

syn2=flat t2

(l=#fl syn1,j=#fj syn1) in(fl=#fl syn2,fj=#fj syn2)

flat(Leaf n)(l=l,j=j)=

(fl=Cons(n,l),fj=Cons(n,j))

j=\y->(rev=#h y))

in#fl r)

(h=Nil))

We remark that deforestation by the shortcut fusion improves nothing:It only replaced intermediate data by function closures.The subsequent transformation steps, which are our contribution,are devoted to remove the function closures.

2.3Deforesting in accumulating parame-

ters by function closure elimination The fact that the result of the preceding transformation introduces function closure constructions is re?ected by the type of function rf:

l::(h::L rev::L j::h::L rev::L fl::(h::L rev::L fj::h::L rev::L, which involves second-order function types.

The goal of the rest of our transformation process is to remove higher-order function types.When the trans-formation completes,we expect that the function rf has a?rst-order type:

flh::l fjh::L lrev::L jrev::L

flrev::L fjrev::L lh::L jh::L,

where flh,fjh,etc.are new?eld labels generated by taking a“product”of record labels,where a label l from the function flat and j from rev together give a new label l j.

This transformation is performed in three substeps: function type lifting,type?attening,and higher-order removal.In the following,we will show each transfor-mation step in turn,where a special attention should be paid to types,which suggest the appropriate direction of transformation.

2.3.1Function type lifting

The?rst subtransformation is function type lifting, which lifts labels of inner record types outside of func-tion closures and distributes the labels of outer record types on each side of function arrow.This is intended to make the outer?eld labels and the inner ones inter-act each other in the next step of transformation.In the present example,the type

l::(h::L rev::L j::h::L rev::L fl::(h::L rev::L fj::h::L rev::L

is conerted into

l::h::L j::h::L

l::rev::L j::rev::L

l::h::L j::h::L

fl::rev::L fj::rev::L.

The function type lifting transformation is accom-plished by the following set of rewrite rules.(We write out l M for case M of l y y,where out l M is intended to drop the injection label l of M.)

(fl=M1,fj=M2)\x case x of

fl y fl M1y

fj y fj M2y (l=M1,j=M2)\x case x of

l y l M1y

j y j M2y

#l M\x out l(M l x)

(l is either fl,fj,l,or j) The rewrite rules are applied to inner expressions?rst.

These rewrite rules are informally justi?ed by the fol-lowing type-based reasoning.The?rst rule is intended to transform a record expression into a function that en-codes the functionality of record?eld selection.The encoding function expects a variant value l v as in-put,where the injection label l is the?eld to select and the injected value v is the argument passed to the se-lected function(The selected value is guaranteed to be a function by the type of record fl::h::L rev:: L fj::h::L rev::L).The result is re-turned as a variant value injected by the same label l of the input.The second rule is justi?ed in the same way.For the third rule,the record expression M,after transformation,is expected to be a function that encodes ?eld selection in the way described above.Therefore we trigger the?eld selection functionality of the encod-ing function by passing a variant injected by the label to select.The returned result comes with an injection label,which is removed by the out l operation.

Applying this transformation,we obtain the follow-ing program.

rf::

T->(l::(h::L),j::(h::L)

l::(rev::L),j::(rev::L)) (fl::(h::L),fj::(h::L)

fl::(rev::L),fj::(rev::L)) rf(Node(t1,t2))inh=

let syn1=rf t1

(\x->case x of

l=y->l=out l(inh l=y)

j=y->j=out j(inh j=y))

5

syn2=rf t2

(\x->case x of

l=y->l=out fl(syn1fl=y)

j=y->j=out fj(syn1fj=y)) in\x->case x of

fl=y->fl=out fl(syn2fl=y)

fj=y->fj=out fj(syn2fj=y)) rf(Leaf n)inh=

\x->case x of

fl=y->

let syn=out l(inh

l=(h=Cons(n,#h y))) in fl=(rev=#rev syn)

fj=y->

let syn=out j(inh

j=(h=Cons(n,#h y))) in fj=(rev=#rev syn)

revflat x=

#rev((let r=rf x

(\x->case x of

l=y->l=out fj(r fj=y)

j=y->j=(rev=#h y))

in\z->out fl(r fl=z))

(h=Nil))

2.3.2Type?attening

The next step of transformation is type?attening. This transformation is intended to replace every nested record/variant constructor pair with a single record con-structor,and also to replace every nested record/variant destructor pair with a single record?eld selector.

At the type level,this corresponds to conversion from l1::j1::τj m::τl n::j1::τj m::τinto

l1j1::τl1j m::τl n j1::τl n j m::τ

where the result is a record type whose set of labels are constructed by an elementwise product.In the present case,the type

l::h::L j::h::L

l::rev::L j::rev::L

l::h::L j::h::L

fl::rev::L fj::rev::L

is converted to

lh::L jh::L lrev::L jrev::L

flh::L fjh::L flrev::L fjrev::L

To achieve this desired transformation,we rewrite ev-ery variant/record constructor pair by

l j M l j M

and every variant/record destructor pair by

#j out l M#l j M

After canceling all record/variant pairs,we apply the following rewrite rules at last:

\x case x of fl y M1

fj y M2

\y(flrev=#flrev M1y(h=#flh y), fjrev=#fjrev M2y(h=#fjh y)) \x case x of l y M1

j y M2

\y(lrev=#lrev M1y(h=#lh y),

jrev=#jrev M2y(h=#jh y)) where M y N is an expression obtained by replacing every free variable y in M by N.

Here we need to remark two points.First,the rewrite rule for variant/record constructor pair produces a record with an incomplete set of labels.For exam-ple,an expression l h M rewrites to a record lh M,which has a missing complementary label lrev.We insist that a record construction with miss-ing?elds is well-typed by assuming that missing?elds are implicitly de?ned to have a diverging expression?of appropriate typeτ.

Second,the above rewrite rules stick to a syntac-tic property that constructor/destructor pairs are placed side by side,which is not always the case.However, we can re?ne the above rules so that they do not rely on such syntactic property,by using the extensionality of records:

if M has type l1::τ1l n::τn then

M l1#l1M l n#l n M

The re?ned rewrite rules are:

if M has type j1::τ1j n::τn then

l M l j1#j1M l j n#j n M

out l M j1#l j1M j n#l j n M Note that the former set of rules are special cases of this re?ned set of rules.

The current transformation may introduce redundant record constructors and destructors,but they can be

6

eliminated by using the extensionality of records.The only dif?cult case is that recursive let de?nition is in-volved.In this case,however,one can follow a similar strategy taken in Section2.2to put the desired pairs side by side.

The validity of the above rewrite rules can be en-sured informally by a type-based reasoning.The aim of transformation is to coerce every type of the form l1::h1::τl2::h1::τinto l1h1::τl i h j::τ,and hence a nested record/variant

constructor pair(destructor pair,resp.)should be trans-lated into a single record constructor(destructor,resp.) with concatenated?eld labels.For case expressions, each of them is expected,after transformation,to accept records of type l1h1::τl i h j::τ.However,ev-ery expression in a case branch l y expects to receive a record of type h1::τthrough y.To ?x this mismatch,we replace every occurrence of y by a record with relevant?elds,i.e.,h1#lh1y h i #lh i y.

The overall result of the type?attening transforma-tion is given below.

rf::

T((lh::L,jh::L)

(jrev::L,lrev::L))

((fjh::L,flh::L)

(fjrev::L,flrev::L))

rf(Node(t1,t2))=\inh->

let syn1=rf t1

(\y->

(lrev=#lrev(inh(lh=#lh y)),

jrev=#jrev(inh(jh=#jh y)))) syn2=rf t2

(\y->

(lrev=#flrev(syn1(flh=#lh y)),

jrev=#fjrev(syn1(fjh=#jh y)))) in\y->

(flrev=#flrev(syn2(flh=#flh y)),

fjrev=#fjrev(syn2(fjh=#fjh y))) rf(Leaf n)=\inh->

\y->(flrev=#lrev(inh

(lh=(Cons(n,#flh y)))),

fjrev=#jrev(inh

(jh=(Cons(n,#fjh y))))) revflat x=

let r=rf x

(\y->

(lrev=#fjrev(r(fjh=(#lh y))),

jrev=#jh y))

in#flrev(r(flh=(#h(h=Nil))))

Here some redundant record constructor/destructor pairs are eliminated using the record extensionality. Further the second argument inh of the recursive func-tion rf is curried for the convenience of the next trans-formation.

2.3.3Higher-order removal

Now we are ready to eliminate higher-order functions. This?nal transformation step is intended to convert higher-order function type

lh::L jh::L lrev::L jrev::L

flh::L fjh::L flrev::L fjrev::L

into

fjh::L flh::L jrev::L lrev::L

fjrev::L flrev::L lh::L jh::L,

a?rst-order function type from record to record.Notice that the labels occurring negatively in the original type constitutes the argument record and that those occurring positively does the result record.

The transformation process crucially relies on a par-ticular syntactic property that the recursive function rf of type T lh::L jh::L lrev::L jrev:: L flh::L fjh::L flrev::L fjrev:: L is de?ned for every constructor of T by the follow-ing syntactic form:

\x0->let x1=rf N1(\y1->M1)

..

.

3.Finally,rewrite the whole expression as fol-

lows:

\x0->

let x1=rf N1

(lrev=#lrev M1,

flh=M1)

..

.

x n=rf N n

(lrev=#lrev M n,

flh=M n)

in(flrev=#flrev M0, lh=M)

where

x n=rf N n(\y n->M n)

in M0

where the same conditions as are imposed(except for that in the rewrite rule2).Then,this is rewrote to the following expression.

let x1=rf N1

(lrev=#lrev M1,

flh=M1)

..

.

x n=rf N n

(lrev=#lrev M n,

flh=M n)

in

a1a n.We allow to confuse a sequence with a set, say,a a to mean a a1a n.Further,a two vec-tor notations juxtaposed together represents a sequence

of pairs of syntactic objects,say,l M to mean l1M1l n M n.

3.1Types

The set of type expressions are de?ned by the following grammar.

τ::αtype variable

ττfunction type

l:τrecord type

l:τvariant type

l:τl:τvariant function type

να1τ1nτn inductive type

The types are monomorphic ones only and they are quite standard,except for the last three of them.We allow a variant type to have only a single injec-tion label.Variants are processed by a function that has a variant function type,which represents a spe-cial class of injection-preserving functions,i.e.,func-tions that map a value of type lτinto l τ.An inductive type de?nes an algebraic type with constructors1n n1.For example, the type of list,which is de?ned in Haskell notation data L=Nil|Consτ*L,is expressed by ναNil Cons headτtailα,where the record type headτtailαrepresents a cons cell.We consider only covariant inductive types(i.e., the type variable bound byνoccurs only in positive positions)and also assume that no different inductive types share the same constructor names.

A type variableαoccurring in a typeτis said to be free,if it is not bound by anyνα.A type is said to be closed,if it has no free occurrences of type vari-ables.Though we are concerned with closed types only, we need type substitution to unroll inductive types:A type substitution ofτfor every free occurrence of type variableαinτ,writtenτατ,is de?ned as usual by induction on the structure ofτ.3.2The language expressions

The set of expressions of the language is de?ned below. M::x variable

λx:τM abstraction

MM application

?x M?xpoint recursion

l M record construction

#l M?eld selection

l M variant construction

fun l x:τM variant function

out l M variant destruction

M datatype construction

case x of x M datatype destruction The language is an explicitly typed lambda-calculus (where all annotated types are assumed to be closed), extended with records,variants,?xpoint,and datatype operators.

A variable occurrence of x in M is said to be free,if x is not bound anyλ-or fun-bindings.An expression with no free variables is called closed.We write M x N for capture-free substitution of N for free occurrences of x in N.

Most of the language constructs are quite standard, except for variant destruction and variant function:A variant destruction is just an inverse of variant construc-tion,i.e.,out l l M M.A variant function

fun l1x1M1;;l n x n M n roughly corresponds to the following Haskell expres-sion

\x->case x of l1x1M1;;l n x n M n with a constraint that each M i has type l i:τi.This constraint is posed by a variant function type,which cannot be expressed by the other type constructs.

The language is missing the feature of mutually re-cursive circular let de?nition,but it can be expressed in the present language.That is,

let x1M1;;x n M n in M

can be encoded using?xpoint:

?xλr:τx1r x n r where

Γxτ

Γλx:τM:ττΓM:ττΓN:τ

Γ?x M:τ

ΓM i:τi(for every i)

Γ#l i M:τi

ΓM:τ

Γfun l x:τM:l:τl:τ

ΓM:l:τl:τΓN:l i:τi

Γout l M:τ

Letθανα1τ1nτn,then

ΓM:τiθ

Γcase x of x1M1;;x n M n:τ

Figure2:Typing Rules

MN V

M?x M V

#l i M V

M fun l x:τF N l i L F i L x V out l M N

M i N M i N x i V

W1#i Mλx:k:T1δout i W1M i x

where i h or i l;x is fresh W1i1M1i n M n

fun i1y i1W1M1y;

..

.

i n y i n W1M n y

where i h or i l;y is fresh T1i:k:δj:δ

i:k:T1δj:k:T1δ

where i h or i l Figure4:Function type lifting transformation

We may occasionally annotate expressions with their type assignment,written Mτ,to indicate certain trans-formation rule is dependent on type information.

3.4.1Function type lifting transformation

Figure4gives the formal de?nition of the function type lifting transformation W1,with a corresponding type transformation function T1.The transformation func-tions are de?ned inductively de?ned on the structure of expressions and types,respectively.We exhibited sig-ni?cant induction cases only;The other cases simply re-curse on the immediate substructures,keeping the out-ermost construct with possible adjustment on type an-notation.The type transformation function T1is gener-alized to type environments by T1x1:τ1x n:τn

x1:T1τ1x n:T1τn.

The type correctness of this transformation can be shown by induction on the structure of expression.

Theorem3.1IfΓM:τthen T1ΓW1M:T1τ.

3.4.2Type?attening transformation

The preceding transformation changes the type of the deforested recursive function toτh:k:δ

h:j:δl:k:δl:j:δ.By the de?nition of the preceding transformation,we can assume,for every label i h l,that every expres-sion out i M has type j:δand that for every expres-sion i M,M has type either h:δor j:δ.

W2d p M i:δ

d1i?δd p i#i W2M

d n i?δ

where d h or d l,d p d,

and i k or i j.

W2out i M j#i j W2M

where i h or i l.

W2fun i1y:k:δM1;

;

i n y:k:δM n

λz:i k:T2δ

i1j#i1jλy W M1k#i1k z

i n j#i n jλy W M n k#i n k z

where i h or i l.

T2d p:i:δd i:T2δ

where d h or d l,d p d,

and i k or i j.

T2i:k:δi:j:δ

i k:δi j:δ

where i h or i l.

Figure5:Type?attening transformation

For any pair of labels l and h,we write lh for a new label that is obtained by concatenation.For notational convention,we would also write l j for a sequence of concatenated labels l j1l j m,and l j for an ele-mentwise product sequence of concatenated labels,i.e., l1j1l i j k l n j m.

Figure5gives the de?nition of the type?attening transformation W2,together with corresponding type transformation T2.In the de?nition,?τdenotes a di-verging expression of typeτ,namely?xλx:τx.

We have the following theorem.

Theorem3.2IfΓM:τthen T2ΓW2M:T2τ.

3.4.3Higher-order removal transformation

The last step of transformation process converts the re-cursive function of type h k:δh j:δ

l k:δl j:δinto h j:δl k:δ

11

h k:δl j:δ.

This transformation is more dif?cult to formalize than the preceding ones because it is a non-local trans-formation in the sense that the result of transforming a subexpression may be used in a context different where the subexpression originally were.

Due to this mobility of program code fragments,we need a few conditions described below in order to en-sure the correctness of transformation.

Linear use of functions For every function g of type

h k:δh j:δand every label i h k,

there is one and only one application site g i

M such that M is different from the diverg-ing expression?.Similar condition is required for every function g of type l k:δl j:δ.

Portability Every expression that has been moved to a different context from the original one behaves in the same way as it would do in the original context.

The side conditions for the syntactic form men-tioned in Section2.3.3is intended to force these re-quirements.Exclusion of functional abstraction con-structs is intended to match the number of execution of function applications with that of syntactic occurrences of application sites,and the?xed set of free variables makes transferred expressions portable,in the sense that free variables in transferred expressions capture the same denotations as they did at the original position. Assuming the above conditions,for every func-tion application site g i M in expressions M M1M n,if g has type either of type h k:δ

h j:δor l k:δl j:δ,then g must be a variable v of either x,y,s1s n.We write M v i for such expression M.M v i is uniquely determined due to the linearity condition.

Figure6de?nes the higher-order removal transfor-mation,where W3de?nes transformations for the syn-tactic forms and in Section3.4.3with sub-sidiary transformation W3.We assume z0z n are fresh variables.

Let us de?ne type transformation T3corresponding to the subsidiary transformation W3as follows.

T

3

h k:δh k:T3δl j:T3δ

T

3

l k:δl k:T3δh j:T3δ

T

3

l j:δh k:T3δl j:T3δ

T 3h j:δl k:T3δh j:T3δ

W3λx0:h k:δh j:δ

let x1f N1λy1:h k:δM1;

x n f N nλy n:h k:δM n

inλy0:l k:δM0

λz0:h j:T3δl k:T3δ

let z1f N1h j#h j W3M1

l k W3M

x1l k

;

z n f N n h j#h j W3M n

l k W3M

x n l k

in l j#l j W3M0

h k W3M

x0h k

W3let x1f N1λy1:h k:δM1;

x n f N nλy n:h k:δM n

in M0

let z1f N1h j#h j W3M1

l k W3M

x1l k

;

z n f N n h j#h j W3M n

l k W3M

x n l k

in W3M0

W

3

x0λz:h k:T3δl j:T3δz0

W

3

x iλz:h k:T3δl j:T3δz i(i0)

W

3

y i z i

W

3

p M p W3M q?T3δ

where p q is either h k l j,

l j h k,l k h j,or

h j l k.

Figure6:Higher-order removal

Then we can show the type correctness of W3.

Lemma3.1LetΓbe a type environment such that

Γx0h k:δh j:δ,Γy0l k:δ,and

for every i1i nΓx i l k:δl j:δ

andΓy i h k:δ.IfΓM:τand M has no oc-

currence of variables other than x i s and y i’s,then we

12

have T3Γz0:h j:δl k:δz1:h k:δl j:δz n:h k:δl j:δW3M:T3τ.

The next theorem follows from this lemma. Theorem3.3Let N1and N2be the argument expres-sions of W3in the?rst and second de?ning equation of Figure6,respectively.IfΓf:στN1:τwhereτh k:δh j:δl k:δ

l j:δ,thenΓf:στW3N1:τholds whereτh j:δl k:δh k:δl j:δ. Also,ifΓf:στN2:τ,thenΓf:σT3τW3N2:T3τholds.

4Comparison with Macro Tree Transducer Composition Method

A precise and detailed analysis on the ability of the at-tribute grammar composition method[7]has been given by Giegerich[8].He showed that a single-use condi-tion,which restricts every use of attribute value to only once use,is essential for the composition to be suc-cessful,whereas the condition can be slightly relaxed in some cases.

The composition method for macro tree transducers proposed by V oigtl¨a nder and K¨u hnemann[18,20,19] applies under a condition that signi?cantly relaxes the single-use condition:It requires,when applied to a composition of a function f1followed by f2,f1to be context linear and f2to be recursion linear.A func-tion f is context linear if every argument supplied to f (except for the recursion argument,on which f is de-?ned inductively)is used only once in the function body of f;A function f is recursion linear if its function body has only a single recursive call to every differ-ent immediate substructure of the recursion argument. Since attribute grammars cannot express non-recursion linear functions,the relaxed condition enlarges the class of composable programs substantially.

Our deforestation method also works under the re-laxed condition.Suppose we have the following pro-gram that we would like to deforest.

data T=Leaf|Node(T,T)

ex::T(h::T)(ex::T)

ex(Node(t1,t2))(h=h)=

ex t1(h=Node(#ex(ex t1(h=h)),

#ex(ex t2(h=Leaf))))

ex Leaf(h=h)=(ex=h)

sp::T(k::T)(sp::T)

sp(Node(t1,t2))(k=k)=

(sp=Node(#sp(sp t1(k=k)),

#sp(sp t2(k=k))))

sp Leaf(k=k)=(sp=Node(k,k))

spex::T T

spex t=

#sp(sp(#ex(ex t(h=Leaf)))(k=Leaf)) The function spex is a composition of functions ex followed by sp,where the former is context linear(but not recursion linear since there are two recursive calls to t1,the left subtree of binary node)and the latter is re-cursion linear(but not context linear since the argument k is used twice).Note that this example is selected just for demonstrating the compositional power of our de-forestation method and it is intended no practical use. Applying our deforestation method,we obtain the following result.

se::T(hsp::T,exk::T)

(hk::T,exsp::T)

se(Node(t1,t2))inh=

let s1l=se t1

(hsp=Node(#exsp s1r,#exsp s2),

exk=#exk inh)

s1r=se t1

(hsp=#hsp inh,exk=#hk s1l)

s2=se t2

(hsp=Node(#hk s1r,#hk s1r),

exk=#hk s1l)

in(exsp=#exsp s1l,hk=#hk s1r)

se Leaf inh=

(exsp=#hsp inh,hk=#exk inh)

aspex::T T

spex t=

let s=se t(hsp=Node(#hk s,#hk s),

exk=Leaf)

in#exsp s

This evidences that our deforestation method is as powerful as V oigtl¨a nder and K¨u hnemann’s,and of course it is more powerful than the attribute grammar composition method.Our transformation succeeds be-cause the linearity condition imposed for the higher-order removal transformation(Section2.3.3)permits programs to be non-recursion linear.Recursive calls to

13

the same substructure are permitted,as far as such re-cursive calls are syntactically distinguished.(The let construct in the syntactic forms and in Sec-tion3.4.3identi?es them by the variables x1x n.)

5Conclusion and Future Work

We have proposed a type-driven transformation proce-dure for deforesting functions with accumulating pa-rameters.The proposed deforestation method can deal with more programs than the existing composition method that has been developed for attribute grammars. It also provides an exposition on the attribute grammar composition algorithm that is more accessible from the side of functional programming community.

The present paper does not give a formal proof on the correctness of each transformation process,leaving it to intuitions.We believe that the correctness of our deforestation method can be proved by using Pitts’syn-tactic formulation of logical relation[14].Since our transformation is driven by type information,the proof would be more comprehensive than that for the original attribute grammar composition method[6].

Finally to note,it would be very interesting to investi-gate the relationship between the macro tree transducer composition method and ours more closely.The ex-ample given in the previous section indicates that their composition abilities are very close,but it is an open question if they exactly coincide.

Acknowledgment I would like to thank Janis V oigtl¨a nder for an interesting discussion on the simi-larity between his macro tree transducer-based method and the present work.

References

https://www.doczj.com/doc/128930631.html,ing circular programs to elimi-

nate multiple traversals of data.Acta Informatica, 21:239–250,1984.

2.R.M.Burstall and J.Darlington.A transformation

system for developing recursive programs.Journal of ACM,24(1):44–67,1977.

3.W.-N.Chin.Safe fusion of functional expressions

II:Further improvemnts.Journal of Functional Programming,4(4):515–555,1994.

4.L.Correnson,E.Duris,D.Parigot,and G.Rous-

sel.Declarative program transformation:A defor-

estation case-study.In Principles and Practice of Declarative Programming,volume1702of LNCS, pages360–377.Springer Verlag,1999.

5.J.Engelfriet and H.V ogler.Macro tree transducers.

Journal of Computer and System Sciences,31:71–146,1985.

6.H.Ganzinger.Increasing modularity and language-

independency in automatically generated compil-ers.Science of Computer Programming,3(3):223–278,1983.

7.H.Ganzinger and R.Giegerich.Attribute coupled

grammars.In Proceedings of the ACM SIGPLAN ’84Symposium on Compiler Construction,volume 19(6)of SIGPLAN Notices,pages157–170,June 1984.

https://www.doczj.com/doc/128930631.html,position and evaluation of

attribute coupled grammars.Acta Informatica, 25(4):355–423,May1988.

9.A.Gill,https://www.doczj.com/doc/128930631.html,unchbury,and S.L.P.Jones.A short

cut to deforestation.In Proceedings of the Confer-ence on Functional Programming Languages and Computer Architecture,pages223–232,New York, NY,USA,June1993.ACM Press.

10.The Haskell home page.http://www.

https://www.doczj.com/doc/128930631.html,/.

11.T.Johnsson.Attribute grammars as a functional

programming paradigm.In G.Kahn,editor,Pro-ceedings of the Conference on Functional Pro-gramming Languages and Computer Architecture, volume274of LNCS,pages154–173.Springer Verlag,1987.

12.K.Kakehi,R.Gl¨u ck,and Y.Futamura.On de-

foresting parameters of accumulating maps.In Logic Based Program Synthesis and Transforma-tion,11th International Workshop,LOPSTR2001, volume2372of LNCS,pages46–56.Springer Ver-lag,2001.

13.D. E.Knuth.Semantics of context-free lan-

guages.Mathematical Systems Theory,2(2):127–145,1968.

14.A.Pitts.Parametric polymorphism and operational

semantics.Mathematical Structures in Computer Science,10(3):321–359,2000.

15.T.Sheard and L.Fegaras.A fold for all seasons.

In Proceedings6th ACM SIGPLAN/SIGARCH Int.

Conf.on Functional Programming Languages and Computer Architecture,FPCA’93,Copenhagen, Denmark,9–11June1993,pages233–242.ACM Press,New York,1993.

16.J.Svenningsson.Shortcut fusion for accumulating

14

parameters&zip-like functions.In Proc.of the 2002International conference on functional pro-gramming,2002.

17.A.Takano and E.Meijer.Shortcut deforestation in

calculational form.In Proceedings of the7th Inter-national Conference on Functional Programming Languages and Computer Architecture,pages306–313,La Jolla,California,June1995.ACM SIG-PLAN/SIGARCH and IFIP WG2.8,ACM Press.

18.J.V oigtl¨a https://www.doczj.com/doc/128930631.html,position of restricted macro

tree transducers.Master’s thesis,Dresden Univer-sity of Technology,Germany,Mar.2001.

19.J.V oigtl¨a https://www.doczj.com/doc/128930631.html,ing circular programs to defor-

est in accumulating parameters.In K.Asai and W.-N.Chin,editors,ASIAN Symposium on Partial Evaluation and Semantics-Based Program Manip-ulation,pages126–137.ACM Press,2002.

20.J.V oigtl¨a nder and A.K¨u https://www.doczj.com/doc/128930631.html,position of

functions with accumulating parameters.Technical Report TUD-FI01-08,Dresden University of Tech-nology,Germany,2001.

21.P.Wadler.Theorems for free!In Fourth Interna-

tional Conference on Functional Programming and Computer Architecture,pages347–359.Addison-Wesley,1989.

22.P.Wadler.Deforestation:transforming programs

to eliminate trees.Theoretical Computer Science, 73(2):231–248,June1990.

Appendix

A Correctness of Shortcut Fusion We prove the correctness of the rewrite rule for shortcut fusion in Section2.2,along the line of[9].Here we only prove the case of lists,which should generalize to arbitrary algebraic data structures,similarly as in[17].

Theorem A.1If g is a function of type

βAβββ

l1::βl n::βj1::βj m::βwhere n m0and A is a constant type,then

foldr k z#j q build g l1e1l n e n

#j q g k z

l1foldr k z e1l n foldr k z e n holds for any q(1q m).Proof.The condition of the free theorem[21]states that:

For all f:A B B,f A B B,and h:B B,we have

a:A b:B

h f a b f a h b

b b1b n:B

h#j q g B f b l1b1l n b n

#j q g B f h b l1h b1l n h b n where g B and g B are the instances of g at B and B, respectively.

Instantiating this equation with h foldr k z,f Cons,and f k,we obtain:

a:A b:B

foldr k z f a b k a foldr k z b

b b1b n:B

foldr k z#j q g B Cons b l1b1l n b n

#j q g B k foldr k z b

l1foldr k z b1

l n foldr k z b n

The premise part of the implication holds from the de?nition of foldr.Hence we obtain the following equation with instantiations b Nil and b i e i for ev-ery i.

foldr k z#j q g B Cons Nil l1e1l n e n

#j q g B k foldr k z Nil

l1foldr k z e n l n foldr k z e n The result follows from the de?nition of foldr and build.

15

常用二极管参数

常用整流二极管 型号VRM/Io IFSM/ VF /Ir 封装用途说明1A5 600V/1.0A 25A/1.1V/5uA[T25] D2.6X3.2d0.65 1A6 800V/1.0A 25A/1.1V/5uA[T25] D2.6X3.2d0.65 6A8 800V/6.0A 400A/1.1V/10uA[T60] D9.1X9.1d1.3 1N4002 100V/1.0A 30A/1.1V/5uA[T75] D2.7X5.2d0.9 1N4004 400V/1.0A 30A/1.1V/5uA[T75] D2.7X5.2d0.9 1N4006 800V/1.0A 30A/1.1V/5uA[T75] D2.7X5.2d0.9 1N4007 1000V/1.0A 30A/1.1V/5uA[T75] D2.7X5.2d0.9 1N5398 800V/1.5A 50A/1.4V/5uA[T70] D3.6X7.6d0.9 1N5399 1000V/1.5A 50A/1.4V/5uA[T70] D3.6X7.6d0.9 1N5402 200V/3.0A 200A/1.1V/5uA[T105] D5.6X9.5d1.3 1N5406 600V/3.0A 200A/1.1V/5uA[T105] D5.6X9.5d1.3 1N5407 800V/3.0A 200A/1.1V/5uA[T105] D5.6X9.5d1.3 1N5408 1000V/3.0A 200A/1.1V/5uA[T105] D5.6X9.5d1.3 RL153 200V/1.5A 60A/1.1V/5uA[T75] D3.6X7.6d0.9 RL155 600V/1.5A 60A/1.1V/5uA[T75] D3.6X7.6d0.9 RL156 800V/1.5A 60A/1.1V/5uA[T75] D3.6X7.6d0.9 RL203 200V/2.0A 70A/1.1V/5uA[T75] D3.6X7.6d0.9 RL205 600V/2.0A 70A/1.1V/5uA[T75] D3.6X7.6d0.9 RL206 800V/2.0A 70A/1.1V/5uA[T75] D3.6X7.6d0.9 RL207 1000V/2.0A 70A/1.1V/5uA[T75] D3.6X7.6d0.9 RM11C 1000V/1.2A 100A/0.92V/10uA D4.0X7.2d0.78 MR750 50V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 MR751 100V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 MR752 200V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 MR754 400V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 MR756 600V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 MR760 1000V/6.0A 400A/1.25V/25uA D8.7x6.3d1.35 常用整流二极管(全桥) 型号VRM/Io IFSM/ VF /Ir 封装用途说明RBV-406 600V/*4A 80A/1.10V/10uA 25X15X3.6 RBV-606 600V/*6A 150A/1.05V/10uA 30X20X3.6 RBV-1306 600V/*13A 80A/1.20V/10uA 30X20X3.6 RBV-1506 600V/*15A 200A/1.05V/50uA 30X20X3.6 RBV-2506 600V/*25A 350A/1.05V/50uA 30X20X3.6 常用肖特基整流二极管SBD 型号VRM/Io IFSM/ VF Trr1/Trr2 封装用途说明EK06 60V/0.7A 10A/0.62V 100nS D2.7X5.0d0.6 SK/高速 EK14 40V/1.5A 40A/0.55V 200nS D4.0X7.2d0.78 SK/低速 D3S6M 60V/3.0A 80A/0.58V 130p SB340 40V/3.0A 80A/0.74V 180p SB360 60V/3.0A 80A/0.74V 180p SR260 60V/2.0A 50A/0.70V 170p MBR1645 45V/16A 150A/0.65V <10nS TO220 超高速

常用二极管参数

常用二极管参数 2008-10-22 11:48 05Z6.2Y 硅稳压二极管 Vz=6~6.35V, Pzm=500mW, 05Z7.5Y 硅稳压二极管 Vz=7.34~7.70V, Pzm=500mW, 05Z13X 硅稳压二极管 Vz=12.4~13.1V, Pzm=500mW, 05Z15Y 硅稳压二极管 Vz=14.4~15.15V, Pzm=500mW, 05Z18Y 硅稳压二极管 Vz=17.55~18.45V, Pzm=500mW, 1N4001 硅整流二极管 50V, 1A,(Ir=5uA, Vf=1V, Ifs=50A) 1N4002 硅整流二极管 100V, 1A, 1N4003 硅整流二极管 200V, 1A, 1N4004 硅整流二极管 400V, 1A, 1N4005 硅整流二极管 600V, 1A, 1N4006 硅整流二极管 800V, 1A, 1N4007 硅整流二极管 1000V, 1A, 1N4148 二极管 75V, 4PF, Ir=25nA, Vf=1V, 1N5391 硅整流二极管 50V, 1.5A,(Ir=10uA, Vf=1.4V, Ifs=50A) 1N5392 硅整流二极管 100V, 1.5A, 1N5393 硅整流二极管 200V, 1.5A, 1N5394 硅整流二极管 300V, 1.5A, 1N5395 硅整流二极管 400V, 1.5A, 1N5396 硅整流二极管 500V, 1.5A, 1N5397 硅整流二极管 600V, 1.5A, 1N5398 硅整流二极管 800V, 1.5A, 1N5399 硅整流二极管 1000V, 1.5A, 1N5400 硅整流二极管 50V, 3A,(Ir=5uA, Vf=1V, Ifs=150A) 1N5401 硅整流二极管 100V, 3A, 1N5402 硅整流二极管 200V, 3A, 1N5403 硅整流二极管 300V, 3A, 1N5404 硅整流二极管 400V, 3A, 1N5405 硅整流二极管 500V, 3A, 1N5406 硅整流二极管 600V, 3A, 1N5407 硅整流二极管 800V, 3A, 1N5408 硅整流二极管 1000V, 3A, 1S1553 硅开关二极管 70V, 100mA, 300mW, 3.5PF, 300ma, 1S1554 硅开关二极管 55V, 100mA, 300mW, 3.5PF, 300ma, 1S1555 硅开关二极管 35V, 100mA, 300mW, 3.5PF, 300ma, 1S2076 硅开关二极管 35V, 150mA, 250mW, 8nS, 3PF, 450ma, Ir≤1uA, Vf≤0.8V,≤1.8PF, 1S2076A 硅开关二极管 70V, 150mA, 250mW, 8nS, 3PF, 450ma, 60V, Ir≤1uA, Vf≤0.8V,≤1.8PF, 1S2471 硅开关二极管80V, Ir≤0.5uA, Vf≤1.2V,≤2PF, 1S2471B 硅开关二极管 90V, 150mA, 250mW, 3nS, 3PF, 450ma, 1S2471V 硅开关二极管 90V, 130mA, 300mW, 4nS, 2PF, 400ma, 1S2472 硅开关二极管50V, Ir≤0.5uA, Vf≤1.2V,≤2PF, 1S2473 硅开关二极管35V, Ir≤0.5uA, Vf≤1.2V,≤3PF,

joinin剑桥小学英语

Join In剑桥小学英语(改编版)入门阶段Unit 1Hello,hello第1单元嗨,嗨 and mime. 1 听,模仿 Stand up Say 'hello' Slap hands Sit down 站起来说"嗨" 拍手坐下来 Good. Let's do up Say 'hello' Slap hands Sit down 好. 我们来再做一遍.站起来说"嗨"拍手坐下来 the pictures. 2 再听一遍给图画编号. up "hello" hands down 1 站起来 2 说"嗨" 3 拍手 4 坐下来说 3. A ,what's yourname 3 一首歌嗨,你叫什么名字 Hello. , what's yourname Hello. Hello. 嗨. 嗨. 嗨, 你叫什么名字嗨,嗨. Hello, what's yourname I'm Toby. I'm Toby. Hello,hello,hello.嗨, 你叫什么名字我叫托比. 我叫托比 . 嗨,嗨,嗨. I'm Toby. I'm Toby. Hello,hello, let's go! 我是托比. 我是托比. 嗨,嗨, 我们一起! Hello. , what's yourname I'm 'm Toby. 嗨.嗨.嗨, 你叫什么名字我叫托比.我叫托比. Hello,hello,hello. I'm 'm Toby. Hello,hello,let's go! 嗨,嗨,嗨.我是托比. 我是托比. 嗨,嗨,我们一起! 4 Listen and stick 4 听和指 What's your name I'm Bob. 你叫什么名字我叫鲍勃. What's your name I'm Rita. What's your name I'm Nick. 你叫什么名字我叫丽塔. 你叫什么名字我叫尼克. What's your name I'm Lisa. 你叫什么名字我叫利萨. 5. A story-Pit'sskateboard. 5 一个故事-彼德的滑板. Pa:Hello,Pit. Pa:好,彼德. Pi:Hello,:What's this Pi:嗨,帕特.Pa:这是什么 Pi:My new :Look!Pi:Goodbye,Pat! Pi:这是我的新滑板.Pi:看!Pi:再见,帕特! Pa:Bye-bye,Pit!Pi:Help!Help!pi:Bye-bye,skateboard! Pa:再见,彼德!Pi:救命!救命!Pi:再见,滑板! Unit 16. Let's learnand act 第1单元6 我们来边学边表演.

常用二极管型号及参数大全精编版

1.塑封整流二极管 序号型号IF VRRM VF Trr 外形 A V V μs 1 1A1-1A7 1A 50-1000V 1.1 R-1 2 1N4001-1N4007 1A 50-1000V 1.1 DO-41 3 1N5391-1N5399 1.5A 50-1000V 1.1 DO-15 4 2A01-2A07 2A 50-1000V 1.0 DO-15 5 1N5400-1N5408 3A 50-1000V 0.95 DO-201AD 6 6A05-6A10 6A 50-1000V 0.95 R-6 7 TS750-TS758 6A 50-800V 1.25 R-6 8 RL10-RL60 1A-6A 50-1000V 1.0 9 2CZ81-2CZ87 0.05A-3A 50-1000V 1.0 DO-41 10 2CP21-2CP29 0.3A 100-1000V 1.0 DO-41 11 2DZ14-2DZ15 0.5A-1A 200-1000V 1.0 DO-41 12 2DP3-2DP5 0.3A-1A 200-1000V 1.0 DO-41 13 BYW27 1A 200-1300V 1.0 DO-41 14 DR202-DR210 2A 200-1000V 1.0 DO-15 15 BY251-BY254 3A 200-800V 1.1 DO-201AD 16 BY550-200~1000 5A 200-1000V 1.1 R-5 17 PX10A02-PX10A13 10A 200-1300V 1.1 PX 18 PX12A02-PX12A13 12A 200-1300V 1.1 PX 19 PX15A02-PX15A13 15A 200-1300V 1.1 PX 20 ERA15-02~13 1A 200-1300V 1.0 R-1 21 ERB12-02~13 1A 200-1300V 1.0 DO-15 22 ERC05-02~13 1.2A 200-1300V 1.0 DO-15 23 ERC04-02~13 1.5A 200-1300V 1.0 DO-15 24 ERD03-02~13 3A 200-1300V 1.0 DO-201AD 25 EM1-EM2 1A-1.2A 200-1000V 0.97 DO-15 26 RM1Z-RM1C 1A 200-1000V 0.95 DO-15 27 RM2Z-RM2C 1.2A 200-1000V 0.95 DO-15 28 RM11Z-RM11C 1.5A 200-1000V 0.95 DO-15 29 RM3Z-RM3C 2.5A 200-1000V 0.97 DO-201AD 30 RM4Z-RM4C 3A 200-1000V 0.97 DO-201AD 2.快恢复塑封整流二极管 序号型号IF VRRM VF Trr 外形 A V V μs (1)快恢复塑封整流二极管 1 1F1-1F7 1A 50-1000V 1.3 0.15-0.5 R-1 2 FR10-FR60 1A-6A 50-1000V 1. 3 0.15-0.5 3 1N4933-1N4937 1A 50-600V 1.2 0.2 DO-41 4 1N4942-1N4948 1A 200-1000V 1.3 0.15-0. 5 DO-41 5 BA157-BA159 1A 400-1000V 1.3 0.15-0.25 DO-41 6 MR850-MR858 3A 100-800V 1.3 0.2 DO-201AD

常用稳压二极管大全,

常用稳压管型号对照——(朋友发的) 美标稳压二极管型号 1N4727 3V0 1N4728 3V3 1N4729 3V6 1N4730 3V9 1N4731 4V3 1N4732 4V7 1N4733 5V1 1N4734 5V6 1N4735 6V2 1N4736 6V8 1N4737 7V5 1N4738 8V2 1N4739 9V1 1N4740 10V 1N4741 11V 1N4742 12V 1N4743 13V 1N4744 15V 1N4745 16V 1N4746 18V 1N4747 20V 1N4748 22V 1N4749 24V 1N4750 27V 1N4751 30V 1N4752 33V 1N4753 36V 1N4754 39V 1N4755 43V 1N4756 47V 1N4757 51V 需要规格书请到以下地址下载, 经常看到很多板子上有M记的铁壳封装的稳压管,都是以美标的1N系列型号标识的,没有具体的电压值,刚才翻手册查了以下3V至51V的型号与电压的对 照值,希望对大家有用 1N4727 3V0 1N4728 3V3 1N4729 3V6 1N4730 3V9

1N4733 5V1 1N4734 5V6 1N4735 6V2 1N4736 6V8 1N4737 7V5 1N4738 8V2 1N4739 9V1 1N4740 10V 1N4741 11V 1N4742 12V 1N4743 13V 1N4744 15V 1N4745 16V 1N4746 18V 1N4747 20V 1N4748 22V 1N4749 24V 1N4750 27V 1N4751 30V 1N4752 33V 1N4753 36V 1N4754 39V 1N4755 43V 1N4756 47V 1N4757 51V DZ是稳压管的电器编号,是和1N4148和相近的,其实1N4148就是一个0.6V的稳压管,下面是稳压管上的编号对应的稳压值,有些小的稳压管也会在管体 上直接标稳压电压,如5V6就是5.6V的稳压管。 1N4728A 3.3 1N4729A 3.6 1N4730A 3.9 1N4731A 4.3 1N4732A 4.7 1N4733A 5.1 1N4734A 5.6 1N4735A 6.2 1N4736A 6.8 1N4737A 7.5 1N4738A 8.2 1N4739A 9.1 1N4740A 10 1N4741A 11 1N4742A 12 1N4743A 13

Join In剑桥小学英语.doc

Join In剑桥小学英语(改编版)入门阶段 Unit 1Hello,hello第1单元嗨,嗨 1.Listen and mime. 1 听,模仿 Stand up Say 'hello' Slap hands Sit down 站起来说"嗨" 拍手坐下来 Good. Let's do itagain.Stand up Say 'hello' Slap hands Sit down 好. 我们来再做一遍.站起来说"嗨"拍手坐下来 2.listen again.Number the pictures. 2 再听一遍给图画编号. 1.Stand up 2.Say "hello" 3.Slap hands 4.Sit down 1 站起来 2 说"嗨" 3 拍手 4 坐下来说 3. A song.Hello,what's yourname? 3 一首歌嗨,你叫什么名字? Hello. Hello.Hello, what's yourname? Hello. Hello. 嗨. 嗨. 嗨, 你叫什么名字? 嗨,嗨. Hello, what's yourname? I'm Toby. I'm Toby. Hello,hello,hello. 嗨, 你叫什么名字? 我叫托比. 我叫托比 . 嗨,嗨,嗨. I'm Toby. I'm Toby. Hello,hello, let's go! 我是托比. 我是托比. 嗨,嗨, 我们一起! Hello. Hello.Hello, what's yourname? I'm Toby.I'm Toby. 嗨.嗨.嗨, 你叫什么名字? 我叫托比.我叫托比. Hello,hello,hello. I'm Toby.I'm Toby. Hello,hello,let's go! 嗨,嗨,嗨.我是托比. 我是托比. 嗨,嗨,我们一起! 4 Listen and stick 4 听和指 What's your name? I'm Bob. 你叫什么名字? 我叫鲍勃. What's your name ? I'm Rita. What's your name ? I'm Nick. 你叫什么名字? 我叫丽塔. 你叫什么名字? 我叫尼克. What's your name ? I'm Lisa. 你叫什么名字? 我叫利萨. 5. A story-Pit'sskateboard. 5 一个故事-彼德的滑板. Pa:Hello,Pit. Pa:好,彼德. Pi:Hello,Pat.Pa:What's this? Pi:嗨,帕特.Pa:这是什么? Pi:My new skateboard.Pi:Look!Pi:Goodbye,Pat! Pi:这是我的新滑板.Pi:看!Pi:再见,帕特! Pa:Bye-bye,Pit!Pi:Help!Help!pi:Bye-bye,skateboard! Pa:再见,彼德!Pi:救命!救命!Pi:再见,滑板! Unit 16. Let's learnand act 第1单元6 我们来边学边表演.

二极管封装大全

二极管封装大全 篇一:贴片二极管型号、参数 贴片二极管型号.参数查询 1、肖特基二极管SMA(DO214AC) 2010-2-2 16:39:35 标准封装: SMA 2010 SMB 2114 SMC 3220 SOD123 1206 SOD323 0805 SOD523 0603 IN4001的封装是1812 IN4148的封装是1206 篇二:常见贴片二极管三极管的封装 常见贴片二极管/三极管的封装 常见贴片二极管/三极管的封装 二极管: 名称尺寸及焊盘间距其他尺寸相近的封装名称 SMC SMB SMA SOD-106 SC-77A SC-76/SC-90A SC-79 三极管: LDPAK

DPAK SC-63 SOT-223 SC-73 TO-243/SC-62/UPAK/MPT3 SC-59A/SOT-346/MPAK/SMT3 SOT-323 SC-70/CMPAK/UMT3 SOT-523 SC-75A/EMT3 SOT-623 SC-89/MFPAK SOT-723 SOT-923 VMT3 篇三:常用二极管的识别及ic封装技术 常用晶体二极管的识别 晶体二极管在电路中常用“D”加数字表示,如: D5表示编号为5的二极管。 1、作用:二极管的主要特性是单向导电性,也就是在正向电压的作用下,导通电阻很小;而在反向电压作用下导通电阻极大或无穷大。正因为二极管具有上述特性,无绳电话机中常把它用在整流、隔离、稳压、极性保护、编码控制、调频调制和静噪等电路中。 电话机里使用的晶体二极管按作用可分为:整流二极管(如1N4004)、隔离二极管(如1N4148)、肖特基二极管(如BAT85)、发光二极管、稳压二极管等。 2、识别方法:二极管的识别很简单,小功率二极管的N极(负极),在二极管外表大多采用一种色圈标出来,有些二极管也用二极管专用符号来表示P极(正极)或N极(负极),也有采用符号标志为“P”、“N”来确定二极管极性的。发光二极管的正负极可从引脚长短来识别,长

1N系列常用整流二极管的主要参数

1N 系列常用整流二极管的主要参数
反向工作 峰值电压 URM/V 额定正向 整流电流 整流电流 IF/A 正向不重 复浪涌峰 值电流 IFSM/A 正向 压降 UF/V 反向 电流 IR/uA 工作 频率 f/KHZ 外形 封装
型 号
1N4000 1N4001 1N4002 1N4003 1N4004 1N4005 1N4006 1N4007 1N5100 1N5101 1N5102 1N5103 1N5104 1N5105 1N5106 1N5107 1N5108 1N5200 1N5201 1N5202 1N5203 1N5204 1N5205 1N5206 1N5207 1N5208 1N5400 1N5401 1N5402 1N5403 1N5404 1N5405 1N5406 1N5407 1N5408
25 50 100 200 400 600 800 1000 50 100 200 300 400 500 600 800 1000 50 100 200 300 400 500 600 800 1000 50 100 200 300 400 500 600 800 1000
1
30
≤1
<5
3
DO-41
1.5
75
≤1
<5
3
DO-15
2
100
≤1
<10
3
3
150
≤0.8
<10
3
DO-27
常用二极管参数: 05Z6.2Y 硅稳压二极管 Vz=6~6.35V,Pzm=500mW,

最新公司注册登记(备案)申请书

公司登记(备案)申请书 注:请仔细阅读本申请书《填写说明》,按要求填写。 □基本信息 名称 名称预先核准文号/ 注册号/统一 社会信用代码 住所 省(市/自治区)市(地区/盟/自治州)县(自治县/旗/自治旗/市/区)乡(民族乡/镇/街道)村(路/社区)号 生产经营地 省(市/自治区)市(地区/盟/自治州)县(自治县/旗/自治旗/市/区)乡(民族乡/镇/街道)村(路/社区)号 联系电话邮政编码 □设立 法定代表人 姓名 职务□董事长□执行董事□经理注册资本万元公司类型 设立方式 (股份公司填写) □发起设立□募集设立经营范围 经营期限□年□长期申请执照副本数量个

□变更 变更项目原登记内容申请变更登记内容 □备案 分公司 □增设□注销名称 注册号/统一 社会信用代码登记机关登记日期 清算组 成员 负责人联系电话 其他□董事□监事□经理□章程□章程修正案□财务负责人□联络员 □申请人声明 本公司依照《公司法》、《公司登记管理条例》相关规定申请登记、备案,提交材料真实有效。通过联络员登录企业信用信息公示系统向登记机关报送、向社会公示的企业信息为本企业提供、发布的信息,信息真实、有效。 法定代表人签字:公司盖章(清算组负责人)签字:年月日

附表1 法定代表人信息 姓名固定电话 移动电话电子邮箱 身份证件类型身份证件号码 (身份证件复印件粘贴处) 法定代表人签字:年月日

附表2 董事、监事、经理信息 姓名职务身份证件类型身份证件号码_______________ (身份证件复印件粘贴处) 姓名职务身份证件类型身份证件号码_______________ (身份证件复印件粘贴处) 姓名职务身份证件类型身份证件号码_______________ (身份证件复印件粘贴处)

剑桥小学英语Join_In

《剑桥小学英语Join In ——Book 3 下学期》教材教法分析2012-03-12 18:50:43| 分类:JOIN IN 教案| 标签:|字号大中小订阅. 一、学情分析: 作为毕业班的学生,六年级的孩子在英语学习上具有非常显著的特点: 1、因为教材的编排体系和课时不足,某些知识学生已遗忘,知识回生的现象很突出。 2、有的学生因受学习习惯及学习能力的制约,有些知识掌握较差,学生学习个体的差异性,学习情况参差不齐、两级分化的情况明显,对英语感兴趣的孩子很喜欢英语,不喜欢英语的孩子很难学进去了。 3、六年级的孩子已经进入青春前期,他们跟三、四、五年级的孩子相比已经有了很大的不同。他们自尊心强,好胜心强,集体荣誉感也强,有自己的评判标准和思想,对知识的学习趋于理性化,更有自主学习的欲望和探索的要求。 六年级学生在英语学习上的两极分化已经给教师的教学带来很大的挑战,在教学中教师要注意引导学生调整学习方式: 1、注重培养学生自主学习的态度 如何抓住学习课堂上的学习注意力,吸引他们的视线,保持他们高涨的学习激情,注重过程的趣味化和学习内容的简易化。 2、给予学生独立思考的空间。 3、鼓励学生坚持课前预习、课后复习的好习惯。 六年级教材中的单词、句子量比较多,难点也比较多,学生课前回家预习,不懂的地方查英汉词典或者其它资料,上课可以达到事半功倍的效果,课后复习也可以很好的消化课堂上的内容。 4、注意培养学生合作学习的习惯。 5、重在培养学生探究的能力:学习内容以问题的方式呈现、留给学生更多的发展空间。 二、教材分析: (一).教材特点: 1.以学生为主体,全面提高学生的素质。

常见二极管参数大全

1N系列稳压管

快恢复整流二极管

常用整流二极管型号和参数 05Z6.2Y 硅稳压二极管 Vz=6~6.35V,Pzm=500mW, 05Z7.5Y 硅稳压二极管 Vz=7.34~7.70V,Pzm=500mW, 05Z13X硅稳压二极管 Vz=12.4~13.1V,Pzm=500mW, 05Z15Y硅稳压二极管 Vz=14.4~15.15V,Pzm=500mW, 05Z18Y硅稳压二极管 Vz=17.55~18.45V,Pzm=500mW, 1N4001硅整流二极管 50V, 1A,(Ir=5uA,Vf=1V,Ifs=50A) 1N4002硅整流二极管 100V, 1A, 1N4003硅整流二极管 200V, 1A, 1N4004硅整流二极管 400V, 1A, 1N4005硅整流二极管 600V, 1A, 1N4006硅整流二极管 800V, 1A, 1N4007硅整流二极管 1000V, 1A, 1N4148二极管 75V, 4PF,Ir=25nA,Vf=1V, 1N5391硅整流二极管 50V, 1.5A,(Ir=10uA,Vf=1.4V,Ifs=50A) 1N5392硅整流二极管 100V,1.5A, 1N5393硅整流二极管 200V,1.5A, 1N5394硅整流二极管 300V,1.5A, 1N5395硅整流二极管 400V,1.5A, 1N5396硅整流二极管 500V,1.5A, 1N5397硅整流二极管 600V,1.5A, 1N5398硅整流二极管 800V,1.5A, 1N5399硅整流二极管 1000V,1.5A, 1N5400硅整流二极管 50V, 3A,(Ir=5uA,Vf=1V,Ifs=150A) 1N5401硅整流二极管 100V,3A, 1N5402硅整流二极管 200V,3A, 1N5403硅整流二极管 300V,3A, 1N5404硅整流二极管 400V,3A,

有限合伙企业登记注册操作指南

有限合伙企业登记注册操作指南 风险控制部 20xx年x月xx日

目录 一、合伙企业的概念 (4) 二、有限合伙企业应具备的条件 (4) 三、有限合伙企业设立具备的条件 (4) 四、注册有限合伙企业程序 (5) 五、申请合伙企业登记注册应提交文件、证件 (6) (一)合伙企业设立登记应提交的文件、证件: (6) (二)合伙企业变更登记应提交的文件、证件: (7) (三)合伙企业注销登记应提交的文件、证件: (8) (四)合伙企业申请备案应提交的文件、证件: (9) (五)其他登记应提交的文件、证件: (9) 六、申请合伙企业分支机构登记注册应提交的文件、证件 (9) (一)合伙企业分支机构设立登记应提交的文件、证件 (10) (二)合伙企业分支机构变更登记应提交的文件、证件: (10) (三)合伙企业分支机构注销登记应提交的文件、证件: (11) (四)其他登记应提交的文件、证件: (12) 七、收费标准 (12) 八、办事流程图 (12) (一)有限合伙企业创办总体流程图(不含专业性前置审批) (12) (二)、工商局注册程序 (15)

(三)、工商局具体办理程序(引入网上预审核、电话预约方式) (16) 九、有限合伙企业与有限责任公司的区别 (16) (一)、设立依据 (16) (二)、出资人数 (16) (三)、出资方式 (17) (四)、注册资本 (17) (五)、组织机构 (18) (六)、出资流转 (18) (七)、对外投资 (19) (八)、税收缴纳 (20) (九)、利润分配 (20) (十)、债务承担 (21) 十、常见问题解答与指导 (21)

常用稳压二极管技术参数及老型号代换.

常用稳压二极管技术参数及老型号代换 型号最大功耗 (mW) 稳定电压(V) 电流(mA) 代换型号国产稳压管日立稳压管 HZ4B2 500 3.8 4.0 5 2CW102 2CW21 4B2 HZ4C1 500 4.0 4.2 5 2CW102 2CW21 4C1 HZ6 500 5.5 5.8 5 2CW103 2CW21A 6B1 HZ6A 500 5.2 5.7 5 2CW103 2CW21A HZ6C3 500 6 6.4 5 2CW104 2CW21B 6C3 HZ7 500 6.9 7.2 5 2CW105 2CW21C HZ7A 500 6.3 6.9 5 2CW105 2CW21C HZ7B 500 6.7 7.3 5 2CW105 2CW21C HZ9A 500 7.7 8.5 5 2CW106 2CW21D HZ9CTA 500 8.9 9.7 5 2CW107 2CW21E HZ11 500 9.5 11.9 5 2CW109 2CW21G HZ12 500 11.6 14.3 5 2CW111 2CW21H HZ12B 500 12.4 13.4 5 2CW111 2CW21H HZ12B2 500 12.6 13.1 5 2CW111 2CW21H 12B2 HZ18Y 500 16.5 18.5 5 2CW113 2CW21J HZ20-1 500 18.86 19.44 2 2CW114 2CW21K HZ27 500 27.2 28.6 2 2CW117 2CW21L 27-3 HZT33-02 400 31 33.5 5 2CW119 2CW21M RD2.0E(B) 500 1.88 2.12 20 2CW100 2CW21P 2B1 RD2.7E 400 2.5 2.93 20 2CW101 2CW21S RD3.9EL1 500 3.7 4 20 2CW102 2CW21 4B2 RD5.6EN1 500 5.2 5.5 20 2CW103 2CW21A 6A1 RD5.6EN3 500 5.6 5.9 20 2CW104 2CW21B 6B2 RD5.6EL2 500 5.5 5.7 20 2CW103 2CW21A 6B1 RD6.2E(B) 500 5.88 6.6 20 2CW104 2CW21B RD7.5E(B) 500 7.0 7.9 20 2CW105 2CW21C RD10EN3 500 9.7 10.0 20 2CW108 2CW21F 11A2 RD11E(B) 500 10.1 11.8 15 2CW109 2CW21G RD12E 500 11.74 12.35 10 2CW110 2CW21H 12A1 RD12F 1000 11.19 11.77 20 2CW109 2CW21G RD13EN1 500 12 12.7 10 2CW110 2CW21H 12A3 RD15EL2 500 13.8 14.6 15 2CW112 2CW21J 12C3 RD24E 400 22 25 10 2CW116 2CW21H 24-1

剑桥小学英语join in五年级测试卷

五 年 级 英 语 测 试 卷 学校 班级 姓名 听力部分(共20分) 一、Listen and colour . 听数字,涂颜色。(5分) 二、 Listen and tick . 听录音,在相应的格子里打“√”。 (6分) 三、Listen and number.听录音,标序号。(9分) pig fox lion cow snake duck

sheep 笔试部分(共80分) 一、Write the questions.将完整的句子写在下面的横线上。(10分) got it Has eyes on a farm it live sheep a it other animals eat it it Is 二、Look and choose.看看它们是谁,将字母填入括号内。(8分) A. B. C. D.

E. F. G. H. ( ) pig ( ) fox ( ) sheep ( ) cat ( ) snake ( ) lion ( ) mouse ( ) elephant 三、Look at the pictures and write the questions.看图片,根据答语写出相应的问题。(10分) No,it doesn’t. Yes,it is.

Yes,it does. Yes,it has. Yes,it does. 四、Choose the right answer.选择正确的答案。(18分) 1、it live on a farm? 2. it fly?

3. it a cow? 4. it eat chicken? 5. you swim? 6. you all right? 五、Fill in the numbers.对话排序。(6分) Goodbye. Two apples , please. 45P , please. Thank you.

公司注册登记流程(四证)

→客户提供:场所证明租赁协议身份证委托书三张一寸相片 →需准备材料:办理税务登记证时需要会计师资格证与财务人员劳动合同 →提交名称预审通知书→公司法定代表人签署的《公司设立登记申请书》→全体股东签署的《指定代表或者公共委托代理人的证明》(申请人填写股东姓名)→全体股东签署的公司章程(需得到工商局办事人员的认可)→股东身份证复印件→验资报告(需到计师事务所办理:需要材料有名称预审通知书复印件公司章程股东身份证复印件银行开具验资账户进账单原件银行开具询证函租赁合同及场所证明法人身份证原件公司开设临时存款账户的复印件)→任职文件(法人任职文件及股东董事会决议)→住所证明(房屋租赁合同)→工商局(办证大厅)提交所有材料→公司营业执照办理结束 →需带材料→公司营业执照正副本原件及复印件→法人身份证原件→代理人身份证→公章→办理人开具银行收据交款元工本费→填写申请书→组织机构代码证办

理结束 →需带材料→工商营业执照正副本复印件原件→组织机构正副本原件及复印件→公章→公司法定代表人签署的《公司设立登记申请书》→公司章程→股东注册资金情况表→验资报告书复印件→场所证明(租赁合同)→法人身份证复印件原件→会计师资格证(劳动合同)→税务登记证办理结束 →需带材料→工商营业执照正副本复印件原件→组织机构正副本原件及复印件→税务登记证原件及复印件→公章→法人身份证原件及复印件→代理人身份证原件及复印件→法人私章→公司验资账户→注以上复印件需四份→办理时间个工作日→办理结束 →需带材料→工商营业执照正副本复印件原件→组织机构正副本原件及复印件→公章→公司法定代表人签署的《公司设立登记申请书》→公司章程→股东注册资金情况表→验资报告书复印件→场所证明(租赁合同)→法人身份证复印件原件→会计师资格证(劳动合同)→会计制度→银行办理的开户许可证复印件→税务登记证备案办理结束

常用稳压管型号参数对照

常用稳压管型号参数对照 3V到51V 1W稳压管型号对照表1N4727 3V0 1N4728 3V3 1N4729 3V6 1N4730 3V9 1N4731 4V3 1N4732 4V7 1N4733 5V1 1N4734 5V6 1N4735 6V2 1N4736 6V8 1N4737 7V5

1N4739 9V1 1N4740 10V 1N4741 11V 1N4742 12V 1N4743 13V 1N4744 15V 1N4745 16V 1N4746 18V 1N4747 20V 1N4748 22V 1N4749 24V 1N4750 27V 1N4751 30V

1N4753 36V 1N4754 39V 1N4755 43V 1N4756 47V 1N4757 51V 摩托罗拉IN47系列1W稳压管IN4728 3.3v IN4729 3.6v IN4730 3.9v IN4731 4.3 IN4732 4.7 IN4733 5.1

IN4735 6.2 IN4736 6.8 IN4737 7.5 IN4738 8.2 IN4739 9.1 IN4740 10 IN4741 11 IN4742 12 IN4743 13 IN4744 15 IN4745 16 IN4746 18 IN4747 20

IN4749 24 IN4750 27 IN4751 30 IN4752 33 IN4753 34 IN4754 35 IN4755 36 IN4756 47 IN4757 51 摩托罗拉IN52系列 0.5w精密稳压管IN5226 3.3v IN5227 3.6v

(完整版)剑桥小学英语Joinin六年级复习题(二)2-3单元.doc

2011-2012 学年度上学期六年级复习题(Unit2-Unit3 ) 一、听力部分 1、听录音排序 ( ) () ()() () 2、听录音,找出与你所听到的单词属同一类的单词 () 1. A. spaceman B. pond C . tiger () 2. A.mascots B. potato C . jeans () 3. A. door B. behind C . golden () 4. A. sometimes B. shop C . prince () 5. A. chair B. who C . sell 3、听录音,将下面人物与他的梦连线 Sarah Tim Juliet Jenny Peter 4、听短文,请在属于Mr. Brown的物品下面打√ ( ) ( ) ( ) ( ) ( ) ( ) ( ) 5、听问句选答句 () 1. A. Yes, I am B. Yes, I have C . Yes, you do () 2. A.Pink B. A friendship band C . Yes. () 3. A. OK B. Bye-bye. C . Thanks, too. () 4. A. Monday. B. Some juice. C . Kitty. () 5. A. I ’ve got a shookbag. B. I ’m a student. C . It has got a round face. 6、听短文,选择正确答案 () 1. Where is Xiaoqing from? She is from . A.Hebei B. Hubei C . Hunan () 2. She goes to school at . A.7:00 B.7:30 C . 7:15 () 3. How many classes in the afternoon? classes. A. four B. three C . two () 4. Where is Xiaoqing at twelve o ’clock? She is . A. at home B. at school C .in the park () 5. What does she do from seven to half past eight? She . A.watches TV B. reads the book C. does homework

很全的二极管参数

G ENERAL PURPOSE RECTIFIERS – P LASTIC P ASSIVATED J UNCTION 1.0 M1 M2 M3 M4 M5 M6 M7 SMA/DO-214AC G ENERAL PURPOSE RECTIFIERS – G LASS P ASSIVATED J UNCTION S M 1.0 GS1A GS1B GS1D GS1G GS1J GS1K GS1M SMA/DO-214AC 1.0 S1A S1B S1D S1G S1J S1K S1M SMB/DO-214AA 2.0 S2A S2B S2D S2G S2J S2K S2M SMB/DO-214AA 3.0 S3A S3B S3D S3G S3J S3K S3M SMC/DO-214AB F AST RECOVERY RECTIFIERS – P LASTIC P ASSIVATED J UNCTION MERITEK ELECTRONICS CORPORATION

U LTRA FAST RECOVERY RECTIFIERS – G LASS P ASSIVATED J UNCTION

S CHOTTKY B ARRIER R ECTIFIERS

S WITCHING D IODES Power Dissipation Max Avg Rectified Current Peak Reverse Voltage Continuous Reverse Current Forward Voltage Reverse Recovery Time Package Part Number P a (mW) I o (mA) V RRM (V) I R @ V R (V) V F @ I F (mA) t rr (ns) Bulk Reel Outline 200mW 1N4148WS 200 150 100 2500 @ 75 1.0 @ 50 4 5000 SOD-323 1N4448WS 200 150 100 2500 @ 7 5 0.72/1.0 @ 5.0/100 4 5000 SOD-323 BAV16WS 200 250 100 1000 @ 7 5 0.8 6 @ 10 6 5000 SOD-323 BAV19WS 200 250 120 100 @ 100 1.0 @ 100 50 5000 SOD-323 BAV20WS 200 250 200 100 @ 150 1.0 @ 100 50 5000 SOD-323 BAV21WS 200 250 250 100 @ 200 1.0 @ 100 50 5000 SOD-323 MMBD4148W 200 150 100 2500 @ 75 1.0 @ 50 4 3000 SOT-323-1 MMBD4448W 200 150 100 2500 @ 7 5 0.72/1.0 @ 5.0/100 4 3000 SOT-323-1 BAS16W 200 250 100 1000 @ 7 5 0.8 6 @ 10 6 3000 SOT-323-1 BAS19W 200 250 120 100 @ 100 1.0 @ 100 50 3000 SOT-323-1 BAS20W 200 250 200 100 @ 150 1.0 @ 100 50 3000 SOT-323-1 BAS21W 200 250 250 100 @ 200 1.0 @ 100 50 3000 SOT-323-1 BAW56W 200 150 100 2500 @ 75 1.0 @ 50 4 3000 SOT-323-2 BAV70W 200 150 100 2500 @ 75 1.0 @ 50 4 3000 SOT-323-3 BAV99W 200 150 100 2500 @ 75 1.0 @ 50 4 3000 SOT-323-4 BAL99W 200 150 100 2500 @ 75 1.0 @ 50 4 3000 SOT-323- 5 350mW MMBD4148 350 200 100 5000 @ 75 1.0 @ 10 4 3000 SOT-23-1 MMBD4448 350 200 100 5000 @ 75 1.0 @ 10 4 3000 SOT-23-1 BAS16 350 200 100 1000 @ 75 1.0 @ 50 6 3000 SOT-23-1 BAS19 350 200 120 100 @ 120 1.0 @ 100 50 3000 SOT-23-1 BAS20 350 200 200 100 @ 150 1.0 @ 100 50 3000 SOT-23-1 BAS21 350 200 250 100 @ 200 1.0 @ 100 50 3000 SOT-23-1 BAW56 350 200 100 2500 @ 70 1.0 @ 50 4 3000 SOT-23-2 BAV70 350 200 100 5000 @ 70 1.0 @ 50 4 3000 SOT-23-3 BAV99 350 200 100 2500 @ 70 1.0 @ 50 4 3000 SOT-23-4 BAL99 350 200 100 2500 @ 70 1.0 @ 50 4 3000 SOT-23-5 BAV16W 350 200 100 1000 @ 75 0.86 @ 10 6 3000 SOD-123 410-500mW BAV19W 410 200 120 100 @ 100 1.0 @ 100 50 3000 SOD-123 BAV20W 410 200 200 100 @ 150 1.0 @ 100 50 3000 SOD-123 BAV21W 410 200 250 100 @ 200 1.0 @ 100 50 3000 SOD-123 1N4148W 410 150 100 2500 @ 75 1.0 @ 50 4 3000 SOD-123 1N4150W 410 200 50 100 @ 50 0.72/1.0 @ 5.0/100 4 3000 SOD-123 1N4448W 500 150 100 2500 @ 7 5 1.0 @ 200 4 3000 SOD-123 1N4151W 500 150 75 50 @ 50 1.0 @ 10 2 3000 SOD-123 1N914 500 200 100 25 @ 20 1.0 @ 10 4 1000 10000 DO-35 1N4148 500 200 100 25 @ 20 1.0 @ 10 4 1000 10000 DO-35 LL4148 500 150 100 25 @ 20 1.0 @ 10 4 2500 Mini-Melf SOT23-1 SOT23-2 SOT23-3 SOT23-4 SOT23-5 SOT323-1 SOT323-2 SOT323-3 SOT323-4 SOT323-5

相关主题
文本预览
相关文档 最新文档