摘要:
本文将探讨如何使用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
Comments NOTHING