Movatterモバイル変換


[0]ホーム

URL:


Scala 3
3.7.4
LearnInstallPlaygroundFind A LibraryCommunityBlog
Scala 3
LearnInstallPlaygroundFind A LibraryCommunityBlog
DocsAPI
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL
Scala 3/scala/scala.runtime

scala.runtime

Members list

Type members

Classlikes

abstractclassAbstractFunction0[+R] extends()=>R

Attributes

Source
AbstractFunction0.scala
Supertypes
trait ()=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction1[-T1,+R] extendsT1=>R

Attributes

Source
AbstractFunction1.scala
Supertypes
traitT1=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction10[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)=>R

Attributes

Source
AbstractFunction10.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction11[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)=>R

Attributes

Source
AbstractFunction11.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction12[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)=>R

Attributes

Source
AbstractFunction12.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction13[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)=>R

Attributes

Source
AbstractFunction13.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction14[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)=>R

Attributes

Source
AbstractFunction14.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction15[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)=>R

Attributes

Source
AbstractFunction15.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction16[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)=>R

Attributes

Source
AbstractFunction16.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction17[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17)=>R

Attributes

Source
AbstractFunction17.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction18[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,-T18,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18)=>R

Attributes

Source
AbstractFunction18.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction19[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,-T18,-T19,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19)=>R

Attributes

Source
AbstractFunction19.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction2[-T1,-T2,+R] extends(T1,T2)=>R

Attributes

Source
AbstractFunction2.scala
Supertypes
trait (T1,T2)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction20[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,-T18,-T19,-T20,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)=>R

Attributes

Source
AbstractFunction20.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction21[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,-T18,-T19,-T20,-T21,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21)=>R

Attributes

Source
AbstractFunction21.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction22[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,-T10,-T11,-T12,-T13,-T14,-T15,-T16,-T17,-T18,-T19,-T20,-T21,-T22,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22)=>R

Attributes

Source
AbstractFunction22.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction3[-T1,-T2,-T3,+R] extends(T1,T2,T3)=>R

Attributes

Source
AbstractFunction3.scala
Supertypes
trait (T1,T2,T3)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction4[-T1,-T2,-T3,-T4,+R] extends(T1,T2,T3,T4)=>R

Attributes

Source
AbstractFunction4.scala
Supertypes
trait (T1,T2,T3,T4)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction5[-T1,-T2,-T3,-T4,-T5,+R] extends(T1,T2,T3,T4,T5)=>R

Attributes

Source
AbstractFunction5.scala
Supertypes
trait (T1,T2,T3,T4,T5)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction6[-T1,-T2,-T3,-T4,-T5,-T6,+R] extends(T1,T2,T3,T4,T5,T6)=>R

Attributes

Source
AbstractFunction6.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction7[-T1,-T2,-T3,-T4,-T5,-T6,-T7,+R] extends(T1,T2,T3,T4,T5,T6,T7)=>R

Attributes

Source
AbstractFunction7.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction8[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8)=>R

Attributes

Source
AbstractFunction8.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8)=>R
classObject
traitMatchable
classAny
abstractclassAbstractFunction9[-T1,-T2,-T3,-T4,-T5,-T6,-T7,-T8,-T9,+R] extends(T1,T2,T3,T4,T5,T6,T7,T8,T9)=>R

Attributes

Source
AbstractFunction9.scala
Supertypes
trait (T1,T2,T3,T4,T5,T6,T7,T8,T9)=>R
classObject
traitMatchable
classAny
abstractclassAbstractPartialFunction[-T1,+R] extendsT1=>R,PartialFunction[T1,R]

AbstractPartialFunction reformulates all operations of its supertraitPartialFunction in terms ofisDefinedAt andapplyOrElse.

AbstractPartialFunction reformulates all operations of its supertraitPartialFunction in terms ofisDefinedAt andapplyOrElse.

This allows more efficient implementations in many cases: - optimizedorElse method supports chainedorElse in linear time, and with no slow-down if theorElse part is not needed. - optimizedlift method helps to avoid double evaluation of pattern matchers & guards of partial function literals.

This trait is used as a basis for implementation of all partial function literals.

Attributes

Source
AbstractPartialFunction.scala
Supertypes
traitPartialFunction[T1,R]
traitT1=>R
classObject
traitMatchable
classAny
Self type
finalclassArrayCharSequence(valxs:Array[Char],start:Int,end:Int) extendsCharSequence

Attributes

Source
ArrayCharSequence.scala
Supertypes
classObject
traitMatchable
classAny
objectArrays

All but the first two operations should be short-circuited and implemented specially by the backend.

All but the first two operations should be short-circuited and implemented specially by the backend.

Attributes

Source
Arrays.scala
Supertypes
classObject
traitMatchable
classAny
Self type
Arrays.type

Attributes

Source
EnumValue.scala
Supertypes
traitProduct
traitEquals
classObject
traitMatchable
classAny
Show all

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitOrderedProxy[T]
traitOrdered[T]
traitComparable[T]
classObject
traitMatchable
traitTyped[T]
traitProxy
classAny
Show all
Known subtypes

A function with all parameters grouped in an array.

A function with all parameters grouped in an array.

Attributes

Source
FunctionXXL.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitRangedProxy[T]
traitOrderedProxy[T]
traitOrdered[T]
traitComparable[T]
classObject
traitMatchable
traitTyped[T]
traitProxy
classAny
Show all
Known subtypes
classRichChar
classRichLong

Attributes

Companion
object
Source
LambdaDeserialize.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Companion
class
Source
LambdaDeserialize.scala
Supertypes
classObject
traitMatchable
classAny
Self type

This class is only intended to be called by synthetic$deserializeLambda$ method that the Scala 2.12 compiler will add to classes hosting lambdas.

This class is only intended to be called by synthetic$deserializeLambda$ method that the Scala 2.12 compiler will add to classes hosting lambdas.

It is not intended to be consumed directly.

Attributes

Source
LambdaDeserializer.scala
Supertypes
classObject
traitMatchable
classAny
Self type

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny
classLazyInt extendsSerializable

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny
classLazyRef[T] extendsSerializable

Classes used as holders for lazy vals defined in methods.

Classes used as holders for lazy vals defined in methods.

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Source
LazyRef.scala
Supertypes
classObject
traitMatchable
classAny
objectLazyVals

Helper methods used in thread-safe lazy vals.

Helper methods used in thread-safe lazy vals.

Attributes

Source
LazyVals.scala
Supertypes
classObject
traitMatchable
classAny
Self type
final abstractclassMatchCase[Pat,+Body]

A type constructor for a case in a match type.

A type constructor for a case in a match type.

Attributes

Source
MatchCase.scala
Supertypes
classObject
traitMatchable
classAny
finalclassModuleSerializationProxy(moduleClass:Class[_]) extendsSerializable

Attributes

Source
ModuleSerializationProxy.scala
Supertypes
classObject
traitMatchable
classAny
classNonLocalReturnControl[T](valkey:AnyRef,valvalue:T) extendsControlThrowable

Attributes

Source
NonLocalReturnControl.scala
Supertypes
classThrowable
classObject
traitMatchable
classAny
Show all
sealed abstractclassNothing$ extendsThrowable

Dummy class which exist only to satisfy the JVM.

Dummy class which exist only to satisfy the JVM. It corresponds toscala.Nothing. If such type appears in method signatures, it is erased to this one.

Attributes

Source
Nothing$.scala
Supertypes
classThrowable
classObject
traitMatchable
classAny
sealed abstractclassNull$

Dummy class which exist only to satisfy the JVM.

Dummy class which exist only to satisfy the JVM. It corresponds toscala.Null. If such type appears in method signatures, it is erased to this one. A private constructor ensures that Java code can't create subclasses. The only value of type Null$ should be null

Attributes

Source
Null$.scala
Supertypes
classObject
traitMatchable
classAny
traitOrderedProxy[T] extendsOrdered[T],Typed[T]

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitTyped[T]
traitProxy
traitOrdered[T]
traitComparable[T]
classObject
traitMatchable
classAny
Show all
Known subtypes
classRichFloat
classRichInt
traitIntegralProxy[T]
classRichChar
classRichLong
classRichByte
classRichShort
Show all
traitRangedProxy[T] extendsTyped[T]

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitTyped[T]
traitProxy
classAny
Known subtypes
traitIntegralProxy[T]
classRichChar
classRichLong
classRichInt
finalclassRichBoolean(valself:Boolean) extendsAnyVal,OrderedProxy[Boolean]

Attributes

Source
RichBoolean.scala
Supertypes
traitTyped[Boolean]
traitProxy
classObject
classAnyVal
traitMatchable
classAny
Show all
finalclassRichByte(valself:Byte) extendsAnyVal,ScalaWholeNumberProxy[Byte]

Attributes

Source
RichByte.scala
Supertypes
finalclassRichChar(valself:Char) extendsAnyVal,IntegralProxy[Char]

Attributes

Source
RichChar.scala
Supertypes
finalclassRichDouble(valself:Double) extendsAnyVal,FractionalProxy[Double]

Attributes

Source
RichDouble.scala
Supertypes
finalclassRichFloat(valself:Float) extendsAnyVal,FractionalProxy[Float]

Attributes

Source
RichFloat.scala
Supertypes
finalclassRichInt(valself:Int) extendsAnyVal,ScalaNumberProxy[Int],RangedProxy[Int]

Attributes

Source
RichInt.scala
Supertypes
traitOrdered[Int]
classObject
traitTyped[Int]
traitProxy
classAnyVal
traitMatchable
classAny
Show all
finalclassRichLong(valself:Long) extendsAnyVal,IntegralProxy[Long]

Attributes

Source
RichLong.scala
Supertypes
finalclassRichShort(valself:Short) extendsAnyVal,ScalaWholeNumberProxy[Short]

Attributes

Source
RichShort.scala
Supertypes

Attributes

Source
Scala3RunTime.scala
Supertypes
classObject
traitMatchable
classAny
Self type

Base classes for the Rich* wrappers of the primitive types.

Base classes for the Rich* wrappers of the primitive types. As with all classes in scala.runtime.*, this is not a supported API.

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitOrderedProxy[T]
traitOrdered[T]
traitComparable[T]
classObject
traitMatchable
traitTyped[T]
traitProxy
classAny
Show all
Known subtypes
classRichFloat
classRichInt
traitIntegralProxy[T]
classRichChar
classRichLong
classRichByte
classRichShort
Show all

The object ScalaRunTime provides support methods required by the scala runtime.

The object ScalaRunTime provides support methods required by the scala runtime. All these methods should be considered outside the API and subject to change or removal without notice.

Attributes

Source
ScalaRunTime.scala
Supertypes
classObject
traitMatchable
classAny
Self type

Attributes

Source
ScalaNumberProxy.scala
Supertypes
traitOrderedProxy[T]
traitOrdered[T]
traitComparable[T]
classObject
traitMatchable
traitTyped[T]
traitProxy
classAny
Show all
Known subtypes
traitIntegralProxy[T]
classRichChar
classRichLong
classRichByte
classRichShort

Attributes

Companion
object
Source
StructuralCallSite.scala
Supertypes
classObject
traitMatchable
classAny

Attributes

Companion
class
Source
StructuralCallSite.scala
Supertypes
classObject
traitMatchable
classAny
Self type
finalclassTupleMirror(arity:Int) extendsProduct,Serializable

A concrete subclass ofscala.deriving.Mirror.Product, enabling reduction of bytecode size. as we do not need to synthesize an anonymous Mirror class at every callsite.

A concrete subclass ofscala.deriving.Mirror.Product, enabling reduction of bytecode size. as we do not need to synthesize an anonymous Mirror class at every callsite.

Attributes

Source
TupleMirror.scala
Supertypes
traitProduct
traitMirror
classObject
traitMatchable
classAny
Show all
finalclassTupleXXL extendsProduct

Attributes

Companion
object
Source
TupleXXL.scala
Supertypes
traitProduct
traitEquals
classObject
traitMatchable
classAny
objectTupleXXL

Attributes

Companion
class
Source
TupleXXL.scala
Supertypes
classObject
traitMatchable
classAny
Self type
objectTuples

Attributes

Source
Tuples.scala
Supertypes
classObject
traitMatchable
classAny
Self type
Tuples.type
final abstractclassTypeBox[-L <:U,+U]

A type for skolems that are generated during capture conversion. Capture conversion narrows the type of a tree whose type has wildcard arguments. A typical situation is a treet of typeC[_ >: L <: U] and an expected typeC[X] whereX is an instantiatable type variable. To be able to instantiateX, we cast the tree to typeX[$n.CAP] where$n is a fresh skolem type with underlying typeTypeBox[L, U].

A type for skolems that are generated during capture conversion. Capture conversion narrows the type of a tree whose type has wildcard arguments. A typical situation is a treet of typeC[_ >: L <: U] and an expected typeC[X] whereX is an instantiatable type variable. To be able to instantiateX, we cast the tree to typeX[$n.CAP] where$n is a fresh skolem type with underlying typeTypeBox[L, U].

Attributes

Source
TypeBox.scala
Supertypes
classObject
traitMatchable
classAny

Deprecated classlikes

finalclassTuple2Zipped[El1,It1 <:Iterable[El1],El2,It2 <:Iterable[El2]](colls: (It1,It2)) extendsAnyVal,ZippedIterable2[El1,El2]

Attributes

Companion
object
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip2.
Source
Tuple2Zipped.scala
Supertypes
traitZippedIterable2[El1,El2]
classAnyVal
traitMatchable
classAny

Attributes

Companion
class
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip2.
Source
Tuple2Zipped.scala
Supertypes
classObject
traitMatchable
classAny
Self type
finalclassTuple3Zipped[El1,It1 <:Iterable[El1],El2,It2 <:Iterable[El2],El3,It3 <:Iterable[El3]](colls: (It1,It2,It3)) extendsAnyVal,ZippedIterable3[El1,El2,El3]

Attributes

Companion
object
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip3.
Source
Tuple3Zipped.scala
Supertypes
traitZippedIterable3[El1,El2,El3]
classAnyVal
traitMatchable
classAny

Attributes

Companion
class
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip3.
Source
Tuple3Zipped.scala
Supertypes
classObject
traitMatchable
classAny
Self type
traitZippedIterable2[+El1,+El2]

This interface is intended as a minimal interface, not complicated by the requirement to resolve type constructors, for implicit search (which only needs to find an implicit conversion to Iterable for our purposes.)

This interface is intended as a minimal interface, not complicated by the requirement to resolve type constructors, for implicit search (which only needs to find an implicit conversion to Iterable for our purposes.)

Attributes

Companion
object
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip2.
Source
Tuple2Zipped.scala
Supertypes
classAny
Known subtypes
classTuple2Zipped[El1,It1,El2,It2]

Attributes

Companion
trait
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip2.
Source
Tuple2Zipped.scala
Supertypes
classObject
traitMatchable
classAny
Self type
traitZippedIterable3[+El1,+El2,+El3]

See comment on ZippedIterable2

See comment on ZippedIterable2

Attributes

Companion
object
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip3.
Source
Tuple3Zipped.scala
Supertypes
classAny
Known subtypes
classTuple3Zipped[El1,It1,El2,It2,El3,It3]

Attributes

Companion
trait
Deprecated
[Since version 2.13.0]Use scala.collection.LazyZip3.
Source
Tuple3Zipped.scala
Supertypes
classObject
traitMatchable
classAny
Self type

Experimental classlikes

Attributes

Experimental
true
Source
TupledFunctions.scala
Supertypes
classObject
traitMatchable
classAny
Self type

Types

infixtype$throws[R,+E <:Exception] =CanThrow[E]?=>R

A helper type to allow syntax like

A helper type to allow syntax like

def f(): T throws Ex1 | Ex2

Used in desugar.throws.

Attributes

Source
$throws.scala
In this article
Generated with
Copyright (c) 2002-2025, LAMP/EPFL
Copyright (c) 2002-2025, LAMP/EPFL

[8]ページ先頭

©2009-2025 Movatter.jp