pExternalFunction = keyword "extern" *!> (
    (\linkage ret nm params extname -> Decl nm (ExternalFunction (fmap snd linkage) ret params (fromMaybe nm extname)))
      <$> optional string <*> pType <*> pName <*> pFormalParamList
      <*> optional (token Assignment *!> pStringName)
      <* token Semicolon)
pExternalFunction = keyword "extern" *!> (
    (\linkage ret nm params extname -> Decl nm (ExternalFunction (fmap snd linkage) ret params (fromMaybe nm extname)))
      <$> optional string <*> pType <*> pName <*> pFormalParamList
      <*> optional (token Assignment *!> pStringName)
      <* token Semicolon)
pExternalFunction = keyword "extern" *!> (
    (\linkage ret nm params extname -> Decl nm (ExternalFunction (fmap snd linkage) ret params (fromMaybe nm extname)))
      <$> optional string <*> pType <*> pName <*> pFormalParamList
      <*> optional (token Assignment *!> pStringName)
      <* token Semicolon)