h&>1      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred ()*1H Safe-Inferred()*1 Safe-Inferred ()*1 Safe-Inferred()*1 Safe-Inferred ()*1\ Safe-Inferred()*1HaGLA column vector with n elements and element type tHaGLA matrix with p rows, q columns, and element type tHaGL4Construct a matrix from a mapping that maps indices (i, j) to the element at row i and column jHaGLConstruct a matrix from a list of the matrix elements in row-major order9 8  Safe-Inferred()*1 HaGL#Any signed or unsigned integer type HaGL*Any single-precision signed primitive type HaGL3Any single- or double-precision floating-point type HaGLAny signed primitive type HaGLAny numeric primitive type HaGL#Any single-precision primitive typeHaGLAny primitive typeHaGLThe type of the elements of t or t itself if t is primitiveHaGL*Any type which supports bitwise operationsHaGLAny type whose values can be interpolated smoothly when constructing a fragment variableHaGLThe underlying type of a vertex input variable. Double-precision types are currently not permitted due to an issue in the OpenGL bindings.HaGL!A primitive type or a vector typeHaGLThe class of base raw types. Users should not and need not implement any instances of this class.HaGLAn unsigned integer     Safe-Inferred ()*1 l  Safe-Inferred ()*1cHaGLA label for the domain where a given computation make take placeHaGL0Labels a constant value computed on the host CPU HaGLLabels a potentially I/O-dependent value computed on the host CPU!HaGLLabels a vertex shader variable"HaGL!Labels a fragment shader variable#HaGL5A generic HaGL expression with domain of computation d and underlying type t !"#  Safe-Inferred ()*1(HaGLSee  https://hackage.haskell.org/package/OpenGL-3.0.3.0/docs/Graphics-Rendering-OpenGL-GL-PrimitiveMode.html#g:1*Graphics.Rendering.OpenGL.GL.PrimitiveMode for a description of each  PrimitiveMode)HaGL:A drawable object specified by a set of variables of type # and the (6 according to which output vertices of the variable - , indexed by ,, should be interpreted. %When using the convenience functions  , , etc., to define a ) with the corresponding (!, at the very minimum the fields - and ." must be set before drawing the ).+HaGLThe (% that will be used to draw the object,HaGLA set of position indices used to construct the primitives of the object-HaGLA vertex variable specifying the position of an arbitrary vertex.HaGLA fragment variable specifying the color of an arbitrary fragment/HaGLAn fragment variable specifying the condition for discarding an arbitrary fragment $%&'()*-.,+/ Safe-Inferred ()*1,  Safe-Inferred ()*10 Safe-Inferred ()*1 Safe-Inferred()*112345 Safe-Inferred ()*1Y$%&'01234567450673$%&'12 Safe-Inferred ()*1  Safe-Inferred()*1 8HaGL8/ specifies how to run the resulting application9HaGLDisplay the output in a window:HaGLDisplay the output in a window, saving the latest frame in the specified file location;HaGLDisplay the output in a window, saving all frames in the specified directory<HaGLDisplay the output in a window for a brief period time, saving the latest frame in the specified file location=HaGL!Options specific to a GLUT window?HaGLThe position of the window@HaGLThe size of the windowAHaGL"Whether to draw in fullscreen modeBHaGLThe title of the windowCHaGL6The (background) color to use when clearing the screenDHaGLThe 8# under which to run the applicationEHaGLAny additional OpenGL-specific setup to run just after the window has been set up. The typical use-case is to import the OpenGL bindings () and define a StateVar such as  lineWidth89:;<=>?@ABCDE (c) Simeon Krastnikov, 2022-2023MIT)Simeon Krastnikov  experimental Safe-Inferred()*1-5FHaGL Construct a GLExpr from a raw type. Rarely useful as this can be done implicitly; e.g., from a numeric literal.GHaGLThe boolean value trueHHaGLThe boolean value falseIHaGLLift a  to an arbitrary GLExpr whose value is the same across any primitive processed in a shader, if used in the context of oneJHaGL prec x0 x, is used to obtain a reference to the value x" one "time-step" in the past, or x0# at the zero-th point in time. The prec operator is usually used to define expressions recurrently; for example: let x = prec 0 (x + 1) counts the total number of points in time. The interpretation of a time-step in a given backend is normally an interval that is on average equal to the length of time between two redraws.KHaGLA vertex input variable (attribute) constructed from a stream of per-vertex data. The number of vertices (the length of the stream) should be consistent across all vertex attributes used to construct a given GLObj.LHaGLA fragment input variable constructed from the output data of a vertex variable, interpolated in a perspective-correct manner over the primitive being processedMHaGLA fragment input variable constructed from the output data of a vertex variable, interpolated linearly across the primitive being processedNHaGLA fragment input variable constructed from the output data of a vertex variable, having the same value across the primitive being processed (cf. the OpenGL API for which vertex is used to determine its value)^HaGL(Extend a vector by prepending an element_HaGL'Extend a vector by appending an element`HaGL Concatenate two vectors togetheraHaGLCreate an array from a list of sxHaGL&A backend that can interpret (draw) a z. Unless overridden the following OpenGL options are set by default in all backends:Clear color equal to blackDepth testing enabled:Blending enabled with blend equation equal to GL_FUNC_ADD ,Source blending factor equal to GL_SRC_ALPHA?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdelmnopqrstuvwxyz{|}~ # !"FGHIJKLMNOPQRSTUVWXYZ[\]^_`a|}~bcdelmnopqrstuvwz{)*-.,+/(xy=>?@ABCDE89:;<`8667774444443125531277 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B B C D E F GHIJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                  DCDC#HaGL-0.1.0.0-IZxUzGMm2RH14i4OJbEXfT Graphics.HaGLGraphics.HaGL.InternalGraphics.HaGL.ExprIDGraphics.HaGL.TH.HaGLGraphics.HaGL.UtilGraphics.HaGL.Util.DepMapGraphics.HaGL.Util.TypesGraphics.HaGL.NumericalGraphics.HaGL.GLTypeGraphics.HaGL.ShaderGraphics.HaGL.GLExprGraphics.HaGL.GLObjpoints trianglesGraphics.HaGL.GLAstGraphics.HaGL.PrintGraphics.HaGL.CodeGenGraphics.HaGL.EvalGraphics.HaGL.BackendGraphics.HaGL.Backend.GLUTGraphics.RenderingOpenGLghc-prim GHC.TypesBoolDoubleFloatIntVecMat fromMappingfromList GLIntegerGLSingleNumeric GLFloatingGLSigned GLNumericGLSingleGLPrimGLEltGLSupportsBitwiseOpsGLSupportsSmoothInterp GLInputType GLPrimOrVecGLTypeUIntFragExprVertExprHostExpr ConstExprGLExprExceptionUnsupportedRecCallUnsupportedNameCaptureUnknownArraySizeGLDomain ConstDomain HostDomain VertexDomainFragmentDomainGLExprGLObjException NoInputVars EmptyInputVarMismatchedInputVars PrimitiveModeGLObj primitiveModeindicespositioncolor discardWhen printGLExpr EvalExceptionGenericUniformEval IOEvaluator constEvalhostEvaldumpGlslgenericUniform GlutRunMode GlutNormalGlutCaptureLatestGlutCaptureFramesGlutCaptureAndExit GlutOptions winPositionwinSize winFullscreenwinTitleclearColrunMode openGLSetupcnsttruefalseuniformprecvertfrag noperspFragflatFragvec2vec3vec4mat2mat3mat4mat2x2mat2x3mat2x4mat3x2mat3x3mat3x4mat4x2mat4x3mat4x4preapp$-arrayx_y_z_w_$fFloatingGLExpr$fFractionalGLExpr $fNumGLExpr $fNumGLExpr0 $fNumGLExpr1 $fEnumGLExprxy_xz_xw_yx_yz_yw_zx_zy_zw_wx_wy_wz_Backend GlutBackendDrawabledrawDeconstructibleDecondeconxyz_xyw_xzy_xzw_xwy_xwz_yxz_yxw_yzx_yzw_ywx_ywz_zxy_zxw_zyx_zyw_zwx_zwy_wxy_wxz_wyx_wyz_wzx_wzy_col0col1col2col3.!castmatCast.+.-.*./.%neg.<.<=.>.>=.==./=.&&.||.^^ntcond.<<.>>.&.|.^compl.#.@radiansdegreessincostanasinacosatansinhcoshtanhasinhacoshatanhpowexplogexp2log2sqrt inversesqrtabssignfloortruncround roundEvenceilfractmodminmaxclampmixstep smoothsteplengthdistancedotcross normalize faceforwardreflectrefractmatrixCompMult outerProduct transpose determinantinverselessThan lessThanEqual greaterThangreaterThanEqualequalnotEqualanyallnotglFunc1glFunc2glFunc3glFunc4glFunc5glFunc6glLift0glLift1glLift2glLift3glLift4glLift5glLift6time mouseLeft mouseRight mouseWheelmouseXmouseYmousePoslineslineLoop lineStrip triangleStrip triangleFanquads quadStrippolygondrawGlutdrawGlutCustomdefaultGlutOptions$fDeconstructibleGLExpr$fDeconstructibleGLExpr0$fDeconstructibleGLExpr1$fDeconstructibleGLExpr2$fDeconstructibleGLExpr3$fDeconstructibleGLExpr4 $fDrawable[]$fDrawableGLObj HasExprIDgetIDExprIDgenID combineIDsidLabelgen2DCoordDeclsgen3DCoordDeclswarnDepMap GenHashablegenHashemptyinsertlookup mapWithKeytraverseWithKeyFinListFLNilFLConsMinMaxflToListRowVecm0%|%- horConcat vertConcattoListeltAteltsAtmatColmatMultgenDivglCastStoreElttoStorableList numComponents showGlslType showGlslValglMap glZipWith glZipWith3eltSizearrayLen getGlslType uniformSetVarName ShaderExpr ShaderConst ShaderVarRef ShaderStmtVarAsmtVarDecl VarDeclAsmt DiscardStmt ShaderDecl UniformDeclInpDeclOutDecl ShaderParamShaderFn ShaderLoopFnShaderaddFnaddDecladdStmtGLColCol0Col1Col2Col3 GLCoordList CoordConsCoordNilGLCoordCoordXCoordYCoordZCoordWIOVarIDInterpolationTypeFlatSmooth NoPerspective GLGenExprLengthClampExp2ExpEqualAnyModLog2NotAllAppStep OpCoordMultiGLVec2GLVec3GLVec4GLMat2x2GLMat2x3GLMat2x4GLMat3x2GLMat3x3GLMat3x4GLMat4x2GLMat4x3GLMat4x4PreConcGLArrayOpCoordOpCol OpArrayEltCastMatCastOpAddOpSubtOpMultOpDivOpModOpNeg OpLessThanOpLessThanEqual OpGreaterThanOpGreaterThanEqualOpEqual OpNotEqualOpAndOpOrOpXorOpNotOpCondOpComplOpLshiftOpRshiftOpBitAndOpBitOrOpBitXor OpScalarMult OpMatrixMultRadiansDegreesSinCosTanAsinAcosAtanSinhCoshTanhAsinhAcoshAtanhPowLogSqrt InversesqrtAbsSignFloorTruncRound RoundEvenCeilFractMix SmoothstepDistanceDotCross Normalize FaceforwardReflectRefractMatrixCompMult OuterProduct Transpose DeterminantInverseLessThan LessThanEqual GreaterThanGreaterThanEqualNotEqualGLFuncGLFunc1GLFunc2GLFunc3GLFunc4GLFunc5GLFunc6GLAtomUniformConstGenVarGenericUniformInpFragIOFloatIODoubleIOIntIOUIntIOBoolIOPrecGLLift0GLLift1GLLift2GLLift3GLLift4GLLift5GLLift6 shaderDomains IsGLDomain getShaderType GLTypeInfo shaderTypeexprTypeGLAst GLAstAtom GLAstFunc GLAstFuncApp GLAstExprtoGLAstInpVar UniformVar GLProgram uniformVars inputVarsnumElts vertexShaderfragmentShader genProgramRunObjprognumVertsvao genRunObjmakeOffrunGlut%OpenGL-3.0.3.0-A4r2fjCZTHy4eezoSBR1gb*Graphics.Rendering.OpenGL.GL.PrimitiveModePointsLinesLineLoop LineStrip Triangles TriangleStrip TriangleFanQuads QuadStripPolygon