Dead extension elimination for Haskell modules
extension
syntax tree
statikus elemzés
haskell
kiterjesztés
szintaxisfa
Abstract:
A haskell egy funkcionálás nyelv egy rendkívül kifejező típusrendszerrel. A legújabb nyelvi szabvány implementálása mellett, több fordító, mint például a GHC vagy az UHC, különböző kiterjesztéseket biztosít a nyelv számára. Ezen kiterjesztések funkcionalitása az egyszerű szintaktikus módosításoktól a nyelv típusrendszerének kibővítéséig terjedhet.
A legtöbb kiterjesztés fordítóprogram specifikus, így ezek használata csökkenti a kód hordozhatóságát. A jelenlegi eszközök csupán a szintaktikus kiterjesztések feleslegességét képesek felismerni, szemantikus elemezést igénylőket nem.
Ebben a dolgozatban egy olyan módszert mutatunk be, amely segít érvelni a programozóknak a moduljaikban használt nyelvi kiterjesztésekről.Ezzel a megközelítéssel nem csupán a felesleges nyelvi kiterjesztéseket tudjuk eltávolítani, hanem képesek vagyunk meghatározni a fennmaradó kiterjesztéseket szükségessé tevő nyelvi elemeik forráskódbeli pontos helyét. A módszert a Haskell-Tools nevű keretrendszerben implementáltuk. A megvalósított eszközt valódi programcsomagokon is teszteltük, és elemeztük az eredményeket.