Haskell 语言 前端UI框架Elm怎么和Haskell交互

Haskell阿木 发布于 2025-06-24 8 次阅读


摘要:

本文将探讨如何使用Haskell语言与Elm前端UI框架进行交互。我们将从基本概念入手,逐步深入到实际代码实现,帮助开发者理解两种语言之间的交互机制,并构建一个简单的示例应用。

一、

随着Web应用的日益复杂,前端开发变得越来越重要。Elm作为一种纯函数式编程语言,以其简洁、安全、可预测的特点受到越来越多开发者的青睐。而Haskell作为一门强大的函数式编程语言,在编译效率和并发处理方面具有显著优势。本文将介绍如何将Haskell与Elm结合,实现高效的前端UI开发。

二、Haskell与Elm的基本概念

1. Haskell

Haskell是一种纯函数式编程语言,具有强大的类型系统和惰性求值机制。它广泛应用于并发编程、编译器开发等领域。

2. Elm

Elm是一种用于构建前端UI的函数式编程语言,具有类型安全、易于测试等特点。Elm编译器将Elm代码编译成JavaScript,从而实现与浏览器的交互。

三、Haskell与Elm交互的原理

1. Elm与Haskell的交互方式

Elm与Haskell的交互主要通过以下几种方式实现:

(1)通过HTTP请求将Haskell服务器作为后端;

(2)使用WebSockets进行实时通信;

(3)通过JSON数据进行数据交换。

2. Elm与Haskell交互的步骤

(1)编写Haskell后端代码,提供API接口;

(2)在Elm项目中引入Haskell后端API;

(3)在Elm中调用Haskell后端API,实现数据交互。

四、示例代码实现

以下是一个简单的示例,展示如何使用Haskell与Elm进行交互。

1. Haskell后端代码

haskell

module Main where

import Network.HTTP.Simple

-- API接口


getWeather :: IO Response


getWeather = get "http://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=beijing"

-- 主函数


main :: IO ()


main = do


response <- getWeather


let weather = getResponseBody response


putStrLn weather


2. Elm项目引入Haskell后端API

```elm

module Main exposing (..)

import Http

import Json

import Json.Decode

import Json.Decode.Generic

import Json.Decode.Pipeline

import Json.Decode.String

import Json.Decode.Decode

import Json.Decode.DecodeResult

import Json.Decode.DecodeError

import Json.Decode.DecodeError.String

import Json.Decode.DecodeError.List

import Json.Decode.DecodeError.Dict

import Json.Decode.DecodeError.Dict.Key

import Json.Decode.DecodeError.Dict.Value

import Json.Decode.DecodeError.Dict.Key.String

import Json.Decode.DecodeError.Dict.Value.String

import Json.Decode.DecodeError.Dict.Key.Number

import Json.Decode.DecodeError.Dict.Value.Number

import Json.Decode.DecodeError.Dict.Key.Boolean

import Json.Decode.DecodeError.Dict.Value.Boolean

import Json.Decode.DecodeError.Dict.Key.Null

import Json.Decode.DecodeError.Dict.Value.Null

import Json.Decode.DecodeError.Dict.Key.Array

import Json.Decode.DecodeError.Dict.Value.Array

import Json.Decode.DecodeError.Dict.Key.Object

import Json.Decode.DecodeError.Dict.Value.Object

import Json.Decode.DecodeError.Dict.Key.Symbol

import Json.Decode.DecodeError.Dict.Value.Symbol

import Json.Decode.DecodeError.Dict.Key.Function

import Json.Decode.DecodeError.Dict.Value.Function

import Json.Decode.DecodeError.Dict.Key.Type

import Json.Decode.DecodeError.Dict.Value.Type

import Json.Decode.DecodeError.Dict.Key.Instance

import Json.Decode.DecodeError.Dict.Value.Instance

import Json.Decode.DecodeError.Dict.Key.Module

import Json.Decode.DecodeError.Dict.Value.Module

import Json.Decode.DecodeError.Dict.Key.ArrayBuffer

import Json.Decode.DecodeError.Dict.Value.ArrayBuffer

import Json.Decode.DecodeError.Dict.Key.Int8Array

import Json.Decode.DecodeError.Dict.Value.Int8Array

import Json.Decode.DecodeError.Dict.Key.Int16Array

import Json.Decode.DecodeError.Dict.Value.Int16Array

import Json.Decode.DecodeError.Dict.Key.Int32Array

import Json.Decode.DecodeError.Dict.Value.Int32Array

import Json.Decode.DecodeError.Dict.Key.Uint8Array

import Json.Decode.DecodeError.Dict.Value.Uint8Array

import Json.Decode.DecodeError.Dict.Key.Uint16Array

import Json.Decode.DecodeError.Dict.Value.Uint16Array

import Json.Decode.DecodeError.Dict.Key.Uint32Array

import Json.Decode.DecodeError.Dict.Value.Uint32Array

import Json.Decode.DecodeError.Dict.Key.Float32Array

import Json.Decode.DecodeError.Dict.Value.Float32Array

import Json.Decode.DecodeError.Dict.Key.Float64Array

import Json.Decode.DecodeError.Dict.Value.Float64Array

import Json.Decode.DecodeError.Dict.Key.BigInt

import Json.Decode.DecodeError.Dict.Value.BigInt

import Json.Decode.DecodeError.Dict.Key.BigRat

import Json.Decode.DecodeError.Dict.Value.BigRat

import Json.Decode.DecodeError.Dict.Key.StringBuffer

import Json.Decode.DecodeError.Dict.Value.StringBuffer

import Json.Decode.DecodeError.Dict.Key.Date

import Json.Decode.DecodeError.Dict.Value.Date

import Json.Decode.DecodeError.Dict.Key.Time

import Json.Decode.DecodeError.Dict.Value.Time

import Json.Decode.DecodeError.Dict.Key.DateTime

import Json.Decode.DecodeError.Dict.Value.DateTime

import Json.Decode.DecodeError.Dict.Key.Duration

import Json.Decode.DecodeError.Dict.Value.Duration

import Json.Decode.DecodeError.Dict.Key.Guid

import Json.Decode.DecodeError.Dict.Value.Guid

import Json.Decode.DecodeError.Dict.Key.SymbolTable

import Json.Decode.DecodeError.Dict.Value.SymbolTable

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntry

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntry

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueInstance

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueInstance

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyModule

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyModule

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueModule

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueModule

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyArrayBuffer

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyArrayBuffer

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueArrayBuffer

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueArrayBuffer

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyInt8Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyInt8Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueInt8Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueInt8Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyInt16Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyInt16Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueInt16Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueInt16Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyInt32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyInt32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueInt32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueInt32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyUint8Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyUint8Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueUint8Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueUint8Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyUint16Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyUint16Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueUint16Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueUint16Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyUint32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyUint32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueUint32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueUint32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyFloat32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyFloat32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueFloat32Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueFloat32Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyFloat64Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyFloat64Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueFloat64Array

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueFloat64Array

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyBigInt

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyBigInt

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueBigInt

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueBigInt

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyBigRat

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyBigRat

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueBigRat

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueBigRat

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyStringBuffer

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyStringBuffer

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueStringBuffer

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueStringBuffer

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyDate

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyDate

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueDate

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueDate

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyTime

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyTime

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueTime

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueTime

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyDateTime

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyDateTime

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueDateTime

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueDateTime

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyDuration

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyDuration

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueDuration

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueDuration

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeyGuid

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeyGuid

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueGuid

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueGuid

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTable

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTable

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTable

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTable

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntry

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntry

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntry

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntry

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKey

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValue

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueString

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueNumber

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueBoolean

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueNull

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueArray

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueObject

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueFunction

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryValueType

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryKeySymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryValueSymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Value.SymbolTableEntryValueSymbolTableEntryKeyInstance

import Json.Decode.DecodeError.Dict.Key.SymbolTableEntryKeySymbolTableEntryValueInstance

import Json.Decode.Decode